Acceso a nodos XML DOM

A través de DOM, puede acceder a cada nodo en el documento XML.

Ejemplo

El siguiente ejemplo utiliza un archivo XML books.xml.

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

accediendo a los nodos utilizando el índice de la lista de nodos
Este ejemplo utiliza el método getElementsByTagname() para obtener el tercer elemento <title> en "books.xml".
recorriendo los nodos utilizando la propiedad length
Este ejemplo utiliza la propiedad length para recorrer todos los elementos <title> en "books.xml".
ver el tipo de nodo del elemento
Este ejemplo utiliza la propiedad nodeType para obtener el tipo de nodo de la raíz en "books.xml".
recorriendo los nodos de elementos
Este ejemplo utiliza la propiedad nodeType para manejar los nodos de elementos en "books.xml".
recorriendo los nodos de elementos utilizando las relaciones de los nodos
Este ejemplo utiliza la propiedad nodeType y la propiedad nextSibling para manejar los nodos de elementos en "books.xml".

Acceder a los nodos

Puede acceder a los nodos de tres formas:

  1. usando el método getElementsByTagName()
  2. mediante el bucle (recorrido) del árbol de nodos
  3. navegando por el árbol de nodos utilizando las relaciones entre los nodos

Método getElementsByTagName()

getElementsByTagName() devuelve todos los elementos que tienen el nombre de etiqueta especificado.

sintaxis

nodo.getElementsByTagName("tagname");

Ejemplo

El siguiente ejemplo devuelve todos los elementos <title> bajo el elemento x:

x.getElementsByTagName("title");

Tenga en cuenta que el ejemplo anterior solo devuelve los elementos <title> bajo el nodo x. Para devolver todos los elementos <title> en el documento XML, utilice:

xmlDoc.getElementsByTagName("title");

Aquí, xmlDoc es el documento en sí mismo (nodo de documento).

Lista de Nodos DOM

getElementsByTagName() para devolver una lista de nodos (lista de nodos). La lista de nodos es un array de nodos.

El siguiente código utiliza loadXMLDoc() Establece "books.xml"Cargar xmlDoc en, luego almacenar una lista de nodos <title> en la variable x:

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

Se puede acceder a los elementos <title> en x mediante índice. Para acceder al tercer <title>, puede escribir:

y=x[2];

TIY

Notas:Los índices comienzan en 0.

En capítulos posteriores de este tutorial, aprenderá más sobre las Listas de Nodos.

Longitud de Lista de Nodos DOM

La propiedad length define la longitud de la lista de nodos (es decir, el número de nodos).

Puede recorrer una lista de nodos utilizando la propiedad length:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title");
for (i=0;i<x.length;i++)
  { 
  document.write(x[i].childNodes[0].nodeValue);
  document.write("<br />");
  }

Ejemplo de explicación:

  1. Usar loadXMLDoc() Establece "books.xml"Cargar xmlDoc
  2. Obtener todos los elementos <title>
  3. Salida del valor del nodo de texto de cada elemento <title>

TIY

Tipo de Nodo

Documento XML documentElement La propiedad es el nodo raíz.

Propiedades del nodo nodeName La propiedad es el nombre del nodo.

Propiedades del nodo nodeType Las propiedades son el tipo de nodo.

En la siguiente sección de este tutorial, aprenderá más sobre las propiedades de los nodos.

TIY

Recorrer el nodo

El siguiente código itera sobre los subnodos del nodo raíz, que también son nodos de elemento:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.documentElement.childNodes;
for (i=0;i<x.length;i++)
{ 
  if (x[i].nodeType==1)
  {//Procesar solo nodos de elemento (tipo 1) 
  document.write(x[i].nodeName);
  document.write("<br />");
  } 
}

Ejemplo de explicación:

  1. Al usar loadXMLDoc() Establece "books.xml"Cargar en xmlDoc"
  2. Obtenga los subnodos del elemento raíz
  3. Verifique el tipo de nodo de cada subnodo. Si el tipo de nodo es "1", es un nodo de elemento.
  4. Si es un nodo de elemento, muestra el nombre del nodo

TIY

Navegación utilizando relaciones de nodos

El siguiente código navega por el árbol de nodos utilizando las relaciones de los nodos:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("book")[0].childNodes;
y=xmlDoc.getElementsByTagName("book")[0].firstChild;
for (i=0;i<x.length;i++)
{
if (y.nodeType==1)
  {//Procesar solo nodos de elemento (tipo 1)
  document.write(y.nodeName + "<br />");
  }
y=y.nextSibling;
}
  1. Al usar loadXMLDoc() Establece "books.xml"Cargar en xmlDoc"
  2. Obtiene el primer hijo del primer elemento "book"
  3. Establece la variable "y" como el primer hijo del primer elemento "book"
  4. Verifica el tipo de nodo de cada nodo hijo, si el tipo de nodo es "1", es un nodo de elemento
  5. Si es un nodo de elemento, muestra el nombre del nodo
  6. Establece la variable "y" como el siguiente nodo hermano y ejecuta el ciclo nuevamente

TIY