Lista de nodos XML DOM
El método getElementsByTagName() y la propiedad childNodes devuelven una lista de nodos.
Pruébelo usted mismo - Ejemplos
Los ejemplos a continuación usan el archivo XML books.xml .
Este ejemplo utiliza el método getElementsByTagName() para obtener el texto del primer elemento <title> en "books.xml".
Este ejemplo usa la lista de nodos y la propiedad de longitud para recorrer todos los elementos <title> en "books.xml"
Este ejemplo usa una lista de atributos para obtener el atributo del primer elemento <book> en "books.xml".
Lista de nodos DOM
Cuando se usan propiedades o métodos como childNodes o getElementsByTagName(), se devuelve un objeto de lista de nodos.
Un objeto de lista de nodos representa una lista de nodos, en el mismo orden que en el XML.
Se accede a los nodos en la lista de nodos con números de índice que comienzan desde 0.
La siguiente imagen representa una lista de nodos de los elementos <title> en " books.xml ":
Supongamos que "books.xml" se carga en la variable xmlDoc.
Este fragmento de código devuelve una lista de nodos de elementos de título en "books.xml":
x = xmlDoc.getElementsByTagName("title");
Después de la ejecución de la instrucción anterior, x es un objeto de lista de nodos.
El siguiente fragmento de código devuelve el texto del primer elemento <title> en la lista de nodos (x):
Ejemplo
var txt = x[0].childNodes[0].nodeValue;
Después de la ejecución de la instrucción anterior, txt = "Italiano cotidiano".
Longitud de la lista de nodos
Un objeto de lista de nodos se mantiene actualizado. Si se elimina o agrega un elemento, la lista se actualiza automáticamente.
La propiedad de longitud de una lista de nodos es el número de nodos en la lista.
Este fragmento de código devuelve el número de elementos <title> en "books.xml":
x = xmlDoc.getElementsByTagName('title').length;
Después de la ejecución de la sentencia anterior, el valor de x será 4.
La longitud de la lista de nodos se puede utilizar para recorrer todos los elementos de la lista.
Este fragmento de código usa la propiedad length para recorrer la lista de elementos <title>:
Ejemplo
x = xmlDoc.getElementsByTagName('title');
xLen = x.length;
for (i = 0; i <xLen; i++) {
txt += x[i].childNodes[0].nodeValue) + " ";
}
Producción:
Everyday Italian
Harry Potter
XQuery Kick Start
Learning XML
Ejemplo explicado:
- Supongamos que " books.xml " se carga en xmlDoc
- Configure la variable x para contener una lista de nodos de todos los elementos del título
- Recopile los valores de los nodos de texto de los elementos <title>
Lista de atributos DOM (mapa de nodos con nombre)
La propiedad de atributos de un nodo de elemento devuelve una lista de nodos de atributo.
Esto se denomina mapa de nodos con nombre y es similar a una lista de nodos, excepto por algunas diferencias en los métodos y propiedades.
Una lista de atributos se mantiene actualizada. Si se elimina o agrega un atributo, la lista se actualiza automáticamente.
Este fragmento de código devuelve una lista de nodos de atributos del primer elemento <book> en "books.xml":
x = xmlDoc.getElementsByTagName('book')[0].attributes;
Después de la ejecución del código anterior, x.length = es el número de atributos y x.getNamedItem() se puede usar para devolver un nodo de atributo.
Este fragmento de código obtiene el valor del atributo "categoría" y el número de atributos de un libro:
Ejemplo
x = xmlDoc.getElementsByTagName("book")[0].attributes;
txt = x.getNamedItem("category").nodeValue + " " + x.length;
Producción:
cooking
1
Ejemplo explicado:
- Supongamos que " books.xml " se carga en xmlDoc
- Configure la variable x para que contenga una lista de todos los atributos del primer elemento <book>
- Obtenga el valor del atributo "categoría" y la longitud de la lista de atributos