XML DOM NodeList

La lista de nodos se devuelve por métodos como getElementsByTagName() y propiedades como childNodes.

Ejemplo

El siguiente ejemplo utiliza un archivo XML books.xml.

Función loadXMLDoc()ubicado en JavaScript externo, utilizado para cargar archivos XML.

Obtener texto del primer elemento <title>
Este ejemplo utiliza el método getElementsByTagName() para obtener texto del primer elemento <title> en "books.xml".
Recorriendo nodos utilizando la propiedad length
Este ejemplo utiliza una lista de nodos y la propiedad length para recorrer todos los elementos <title> en "books.xml".
Obtener atributos del elemento
Este ejemplo utiliza una lista de propiedades para obtener atributos del primer elemento <title> en "books.xml".

DOM NodeList

Al usar propiedades o métodos como childNodes o getElementsByTagName(), se devuelve un objeto NodeList.

El objeto NodeList representa una lista de nodos, en el mismo orden que en XML.

Se utiliza un índice que comienza en 0 para acceder a los nodos en la lista de nodos.

La siguiente imagen representa "books.xml"Una lista de nodos de elementos <title>:"

lista de nodos DOM

El siguiente fragmento de código utiliza loadXMLDoc() "Cargar "books.xml" en xmlDoc y devolver "books.xml"Una lista de nodos de un elemento title:"

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title");

Después de la ejecución de la declaración anterior, x se convierte en un objeto NodeList.

El siguiente fragmento de código devuelve el texto del primer elemento <title> de la lista de nodos x:

txt=x[0].childNodes[0].nodeValue;

Después de la ejecución de la declaración anterior, txt = "Everyday Italian".

TIY

Longitud de la Lista de Nodos

El objeto NodeList se mantendrá actualizado. Si se eliminan o agregan elementos, la lista se actualizará automáticamente.

La propiedad length de la lista de nodos es el número de nodos en la lista.

El siguiente fragmento de código utiliza loadXMLDoc() Asignar "books.xml"Cargar xmlDoc y devolver la cantidad de elementos <title> en "books.xml":

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName('title').length;

Después de la ejecución de la declaración anterior, x = 4.

La longitud de la lista de nodos se puede usar para recorrer todos los elementos de la lista.

El siguiente fragmento de código utiliza la propiedad length para recorrer la lista de elementos <title>:

xmlDoc=loadXMLDoc("books.xml");
//la variable x almacenará una lista de nodos
x=xmlDoc.getElementsByTagName('title');
for (i=0;i<x.length;i++)
{
document.write(x[i].childNodes[0].nodeValue);
document.write("<br />");
}

Salida:

Harry Potter
Everyday Italian
XQuery Kick Start
Learning XML

Ejemplo de explicación:

  • Al usar loadXMLDoc() Asignar "books.xml"Cargar xmlDoc
  • Establecer la variable x para la lista de nodos de todos los elementos title
  • Salida de valores de nodos de texto de todos los elementos <title>

TIY

DOM Attribute List (Named Node Map)

El atributo attributes del nodo de elemento devuelve una lista de nodos de atributo.

Esto se llama Named Node Map, además de algunas diferencias en métodos y atributos, es similar a la lista de nodos.

La lista de atributos se mantendrá actualizada. Si se elimina o agrega un atributo, esta lista se actualizará automáticamente.

El siguiente fragmento de código utiliza loadXMLDoc() Cargar "books.xml" en xmlDoc y desde "books.xmlLa lista de nodos de atributo devuelta por el primer elemento <book> en "

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName('book')[0].attributes;

Después de ejecutar el código anterior, x.length es igual a la cantidad de atributos y se puede usar x.getNamedItem() para devolver el nodo de atributo.

El siguiente fragmento de código muestra el valor del atributo "category" de un libro y la cantidad de atributos:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("book")[0].attributes;
document.write(x.getNamedItem("category").nodeValue);
document.write("<br />" + x.length);

Salida:

hijos
1

Ejemplo de explicación:

  • Al usar loadXMLDoc() Asignar "books.xml"Cargar en xmlDoc"
  • Asignar a la variable x una lista de todos los atributos del primer elemento <book>
  • Salida del valor del atributo "category"
  • Salida de la longitud de la lista de atributos

TIY