JSON es un formato de datos de intercambio de Javascript que el auge de AJAX ha hecho muy popular. En javascript es mucho más cómodo trabajar con JSON frente a XML ya que podemos analizarlo rápidamente utilizando eval().
Cuando queremos trabajar con API´s como las de Amazon, Technorati, del.icio.us o Ficrk vía REST nos encontramos con que todas ellas devuelven los datos en XML. Gracias a PHP5 y utilizando sus extensiones DOM y XSL podemos transformar un documento XML en JSON de forma muy sencilla.
Veamos un ejemplo de cómo hacer esto con una consulta a la API de Technorati:
En primer lugar vamos a componer la URL con la que haremos nuestra consulta:
$technoratiApiKey = "introduceTuAPIdeTechnorati";
$url = "http://api.technorati.com/tag";
$tag = "usabilidad";
$request=$url."?key=".$technoratiApiKey."&tag=".urlencode($tag);
Y ahora creamos un nuevo objeto DOM y cargamos nuestro el fichero XML que nos devuelve la consulta:
$inputdom = new DomDocument();
$inputdom->load($request);
Para transformar los datos utilizaremos un xml2json.xsl, un fichero XSLT que tiene las instrucciones para transformar XML en JSON. Lo cargamos en un nuevo objeto DOM:
$xslt = "xml2json.xsl";
$xsl = new DomDocument();
$xsl->load($xslt);
¿Qué nos falta? pues: crear un procesador de XSLT en PHP, cargar nuestra xslt, realizar la transformación y generar el documento:
$proc = new XsltProcessor();
$xsl = $proc->importStylesheet($xsl);
$newdom = $proc->transformToDoc($inputdom);
print $newdom->saveHTML();
Próximamente veremos cómo utilizar esta técnica para procesar información de diversas API´s REST mediante AJAX.
Excelente…
Si más personas supieran lo complicado que es ese navegador (IE), pero desgrciadamente tienes mucha razón, aun hay mucha gente que no saben que existen otras mejores opciones.
Personalmente, recomendamos FIREFOX o Chrome.
Obviamente toca lidiar con IE, asà que más vale hacerlo con buena actitud e intentar no enfadarse. Buen aporte, StackOverflow está lleno de perlas de estas.
Ja ja ja. Me encantó cómo finalizaste el artÃculo. Saludos.