Ubicación de nodos XML DOM

Se puede localizar el nodo utilizando la relación entre nodos.

Ejemplo

El siguiente ejemplo utiliza archivos XML books.xml.

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

Obtener el nodo padre del nodo
Este ejemplo utiliza la propiedad parentNode para obtener el nodo padre.
Obtener el primer hijo del nodo
Este ejemplo utiliza el método firstChild() y una función personalizada para obtener el primer hijo de un nodo.

Localizar nodos DOM

Acceder a los nodos en el árbol de nodos a través de las relaciones entre los nodos, generalmente llamado localizar nodos ("navegación de nodos").

En el XML DOM, las relaciones entre los nodos se definen como atributos del nodo:

  • parentNode
  • childNodes
  • firstChild
  • lastChild
  • nextSibling
  • previousSibling

La siguiente imagen muestra books.xml Una parte de la estructura del árbol de nodos y explica las relaciones entre los nodos:

Árbol de nodos DOM

DOM - Padre del nodo

Todos los nodos tienen un solo padre. El siguiente código localiza al padre del <book>:

xmlDoc=loadXMLDoc("books.xml");
x = xmlDoc.getElementsByTagName("book")[0];
document.write(x.parentNode.nodeName);

Ejemplo de explicación:

  • A través de loadXMLDoc() Coloca "books.xml" se carga en xmlDoc
  • Obtener el primer elemento <book>
  • Mostrar el nombre del nodo del padre del "x"

TIY

Evitar nodos de texto vacíos

Firefox y otros navegadores consideran los espacios en blanco vacíos y los saltos de línea como nodos de texto, mientras que IE no hace lo mismo.

Esto causará problemas al usar los siguientes atributos: firstChild, lastChild, nextSibling, previousSibling.

Para evitar ubicar el nodo de texto vacío (espacios en blanco y saltos de línea entre nodos de elemento), usamos una función para verificar el tipo del nodo:

function get_nextSibling(n)
{
y = n.nextSibling;
while (y.nodeType!=1)
  {
  y=y.nextSibling;
  }
return y;
}

Con la función anterior, podemos usar get_nextSibling(node) en lugar del atributo node.nextSibling.

Explicación del código:

El tipo de nodo del elemento es 1. Si el nodo del mismo nivel no es un nodo de elemento, se mueve al siguiente nodo hasta encontrar un nodo de elemento. De esta manera, en IE y Firefox se obtiene el mismo resultado.

Obtener el primer elemento

El siguiente código muestra el primer elemento del primer <book>:

<html>
<head>
<script type="text/javascript" src="loadxmldoc.js">
</script>
<script type="text/javascript">
//verificar si el primer nodo es un nodo de elemento
función get_firstChild(n)
{
y=n.firstChild;
while (y.nodeType!=1)
  {
  y=y.nextSibling;
  }
return y;
}
</script>
</head>
<body>
<script type="text/javascript">
xmlDoc=loadXMLDoc("books.xml");
x=get_firstChild(xmlDoc.getElementsByTagName("book")[0]);
document.write(x.nodeName);
</script>
</body>
</html>

Salida:

title

Ejemplo de explicación:

  • A través de loadXMLDoc() Coloca "books.xml"Carga en xmlDoc"
  • Usa la función get_firstChild en el primer <book> para obtener el primer nodo hijo dentro del nodo de elemento
  • Salida del primer nodo hijo (que pertenece a un nodo de elemento)

TIY

Ejemplo

El siguiente ejemplo utiliza funciones similares:

  • firstChild: TIY
  • lastChild: TIY
  • nextSibling: TIY
  • previousSibling: TIY