Desde que JQuery llegó a nuestras vidas, Javascript se ha convertido en un camino de rosas Tanto es así que en pocas líneas podemos conseguir el parseo completo de un archivo XML ¡Vamos a verlo!
En primer lugar hay que aclarar que podemos toparnos principalmente con tres formatos de XML diferentes:
- Utilizando atributos: Cada elemento guarda su información dentro de atributos. Los atributos deberían utilizarse para información predeterminada, metadatos, archivos grandes (los atributos tienden a ocupar menos bytes que los elementos).
<?xml version="1.0" encoding="utf-8" ?>
<Blogs>
<blog name="WebLog Expert - Powerful log analyzer"
description="Download and analyze Apache and IIS Web logs on your own PC."
url=" http://www.weblogexpert.com/"/>
<blog name="Professional drupal themes"
description="For professional drupal themes with a unique look and feel, visit TopNotchThemes.com."
url="http://www.topnotchthemes.com/"/>
<blog name="Paypal Developer Community"
description="The community for developping paypal payment processing scripts."
url="http://www.pdncommunity.com" />"
</Blogs> - Utilizando nodos/elementos: Los elementos contienen a su vez otros elementos llamados nodos. Se suelen utilizar para almacenar datos.
<?xml version="1.0" encoding="utf-8" ?>
<Blogs>
<blog>
<name>WebLog Expert - Powerful log analyzer</name>
<description>Download and analyze Apache and IIS Web logs on your own PC.</description>
<url>http://www.weblogexpert.com/</url>
</blog>
<blog>
<name>Professional drupal themes</name>
<description>For professional drupal themes with a unique look and feel, visit TopNotchThemes.com.</description>
<url>http://www.topnotchthemes.com/</url>
</blog>
<blog>
<name>Paypal Developer Community</name>
<description>The community for developping paypal payment processing scripts.</description>
<url>http://www.pdncommunity.com</url>
</blog>
</Blogs> - Mezcla de los dos anteriores.
Dependiendo del cómo esté almacenado utilizaremos un método u otro para recuperarlo.
Recuperación de atributos
//Read attributes
$.get("Attributes.xml", function (xml) {
$(xml).find("blog").each(function () {
var name = $(this).attr('name');
var description = $(this).attr('description');
var url = $(this).attr('url');
alert(name + " " + description + " " + url);
});
});
Recuperación de nodos/elementos
//Read nodes
$.get("Nodes.xml", function (xml) {
$(xml).find("blog").each(function () {
var name = $(this).find('name').text();
var description = $(this).find('description').text();
var url = $(this).find('url').text();
alert(name + " " + description + " " + url);
});
});
Lo que estamos haciendo en ambos casos es una iteración a través de each por cada elemento blog que tengamos en el archivo. Dependiendo del tipo que esperemos utilizaremos attr para recuperar los atributos y find para los elementos.
Espero que sea de utilidad
¡Saludos!