XML2JSON online
miércoles, 18 de julio de 2012Aprovechando las librerías PHP que ofrece uno es estos servidores gratuitos que pululan por internet el colgado un script que permite convertir el contenido XML de un archivo accesible desde la web en formato JSON utilizable fácilmente desde el javascript de nuestra web.
De esta manera podemos consultar y pasear información disponible únicamente en formato XML (como los de Meteoclimatic, motivo por el cual he hecho este script) desde una sencilla aplicación javascript ó simplemente acceder a datos de forma más dinánimca y sin tener que recargar la páginas como nos obligan otras aplicaciones tipo server side.
El servidor donde estaba alojado el script empezó a dar problemas en cuanto las solicitudes aumentaron quedando practicamente inutilizado el servicio, sorry.
La aplicación es esta http://cuadernodecampo.eu5.org/xj.php y funciona de la siguiente manera.
Espera recibir (GET) dos variables:
url [obligatoria] : apunta a un archivo XML de acceso público en la web
objeto [opcional] : si se especifica devuelve la conversión en forma de objeto javascript.
Una consulta así
http://cuadernodecampo.eu5.org/xj.php?objeto=OOO&url=http://www.meteoclimatic.com/feed/xml/ESMUR3000000030204A
devolvería
OOO={"meteodata":{"@attributes":{"version":"0.1"},"description":"Meteoclimatic - XML","link":"http:\/\/meteoclimatic.com\/","copyright":"Creative Commons - Attribution-NonCommercial-NoDerivs 3.0 Unported","ttl":"60","pubDate":"Wed, 18 Jul 2012 14:09:39 +0000","docs":"http:\/\/meteoclimatic.com\/index\/wp\/xml_es.html","stations":{"pubDate":"Wed, 18 Jul 2012 14:09:39 +0000","station":{"id":"ESMUR3000000030204A","location":"Cartagena","homepage":"","datasheet":"http:\/\/www.meteoclimatic.com\/perfil\/ESMUR3000000030204A","author":"","pubDate":"Wed, 18 Jul 2012 13:32:30 +0000","QOS":"2","stationdata":{"temperature":{"unit":"C","now":"31.6","max":"31.9","min":"20.0"},"humidity":{"unit":"%","now":"8","max":"49","min":"8"},"barometre":{"unit":"hPa","now":"1018","max":"1022","min":"1018"},"wind":{"unit":"kmh","now":"6","azimuth":"248","max":"18"},"rain":{"unit":"mm","total":"0.0"}}}}}};
De esta manera podemos acceder via javascript a consultas en la web de forma mucho más fácil y, sobretodo, evitando aumentar el tiempo de carga de nuestras páginas web.
Nota I: Actualmente la aplicación genera una caché de los datos a intervalos de 15 minutos para evitar abusos y porque ese es el periodo de actualización de datos del servidor de Meteoclimatic que me dió pie a hacer este script.
Si alguien está interesado en reducir este periodo de tiempo se puede negociar.
Nota II: he incluido la opción de devolver el código en forma de objeto porque la lectura de JSON fallaba, creo que por culpa de las cabeceras del servidor gratuito. Asi es que el uso más apropiado es incluyendo el nombre del objeto y cargando la información con $.getScript().
Nota III: El código de la función principal de conversión xml2json está sacado de aquí.
Nota IV: Lo he puesto en un servidor externo para que en caso de que lo encontreis útil lo podais usar sin que mi propio servidor reciba más peticiones de las necesarias.
Apenas he probado ese servidor (http://eu5.org/ : Alemania) en que está alojado. Ignoro si dejará de funcionar en 15 dias o en 15 años. Como se suele decir: usalo bajo tu propio riesgo.
Actualización
Ignorad las líneas que hacen referencia al hosting de cuadernodecampo.eu5.org, me han cancelado dicha cuenta. Cuando encuentre otro hosting gratuito con librerías parecidas volveré a colgar el script.
18 de December, 2024 @ 13:42