XML DOM - Acceso a nodos
Con el DOM, puede acceder a todos los nodos de un documento XML.
Pruébelo usted mismo - Ejemplos
Los ejemplos a continuación usan el archivo XML books.xml .
Utilice el método getElementsByTagName() para obtener el tercer elemento <title> en "books.xml"
Use la propiedad length para recorrer todos los elementos <title> en "books.xml"
Utilice la propiedad nodeType para obtener el tipo de nodo del elemento raíz en "books.xml".
Utilice la propiedad nodeType para procesar solo los nodos de elementos en "books.xml".
Use la propiedad nodeType y la propiedad nextSibling para procesar los nodos de elementos en "books.xml".
Acceso a nodos
Puede acceder a un nodo de tres maneras:
1. Usando el método getElementsByTagName()
2. Recorriendo (recorriendo) el árbol de nodos.
3. Navegando por el árbol de nodos, utilizando las relaciones de nodos.
El método getElementsByTagName()
getElementsByTagName() devuelve todos los elementos con un nombre de etiqueta especificado.
Sintaxis
node.getElementsByTagName("tagname");
Ejemplo
El siguiente ejemplo devuelve todos los elementos <title> debajo del elemento x:
x.getElementsByTagName("title");
Tenga en cuenta que el ejemplo anterior solo devuelve elementos <title> debajo del nodo x. Para devolver todos los elementos <title> en el documento XML, use:
xmlDoc.getElementsByTagName("title");
donde xmlDoc es el propio documento (nodo de documento).
Lista de nodos DOM
El método getElementsByTagName() devuelve una lista de nodos. Una lista de nodos es una matriz de nodos.
x = xmlDoc.getElementsByTagName("title");
Se puede acceder a los elementos <title> en x por número de índice. Para acceder al tercer <título> puedes escribir::
y = x[2];
Nota: El índice comienza en 0.
Aprenderá más sobre las listas de nodos en un capítulo posterior de este tutorial.
Longitud de la lista de nodos DOM
La propiedad de longitud define la longitud de una lista de nodos (el número de nodos).
Puede recorrer una lista de nodos utilizando la propiedad de longitud:
Ejemplo
var
x = xmlDoc.getElementsByTagName("title");
for (i = 0; i <x.length; i++) {
//
do something for each node
}
Tipos de nodos
La propiedad documentElement del documento XML es el nodo raíz.
La propiedad nodeName de un nodo es el nombre del nodo.
La propiedad nodeType de un nodo es el tipo del nodo.
Aprenderá más sobre las propiedades de los nodos en el próximo capítulo de este tutorial.
Nodos transversales
El siguiente código recorre los nodos secundarios, que también son nodos de elementos, del nodo raíz:
Ejemplo
txt = "";
x = xmlDoc.documentElement.childNodes;
for (i = 0; i <x.length; i++)
{
// Process only element nodes (type 1)
if (x[i].nodeType == 1) {
txt += x[i].nodeName + "<br>";
}
}
Ejemplo explicado:
- Suponga que ha cargado " books.xml " en xmlDoc
- Obtenga los nodos secundarios del elemento raíz (xmlDoc)
- Para cada nodo secundario, verifique el tipo de nodo. Si el tipo de nodo es "1", es un nodo de elemento
- Muestra el nombre del nodo si es un nodo de elemento
Relaciones de nodo de navegación
El siguiente código navega por el árbol de nodos utilizando las relaciones de nodos:
Ejemplo
x = xmlDoc.getElementsByTagName("book")[0];
xlen = x.childNodes.length;
y = x.firstChild;
txt = "";
for (i = 0; i <xlen; i++)
{
// Process only element nodes (type 1)
if (y.nodeType == 1) {
txt += y.nodeName + "<br>";
}
y = y.nextSibling;
}
Ejemplo explicado:
- Suponga que ha cargado " books.xml " en xmlDoc
- Obtenga los nodos secundarios del primer elemento del libro
- Establezca la variable "y" para que sea el primer nodo secundario del primer elemento del libro
- Para cada nodo secundario (comenzando con el primer nodo secundario "y"):
- Compruebe el tipo de nodo. Si el tipo de nodo es "1", es un nodo de elemento
- Muestra el nombre del nodo si es un nodo de elemento
- Establezca la variable "y" para que sea el siguiente nodo hermano y vuelva a ejecutar el ciclo