Tutorial XML

INICIO XML Introducción XML XML Cómo utilizar Árbol XML Sintaxis XML Elementos XML Atributos XML Espacios de nombres XML Pantalla XML Solicitud Http XML Analizador XML DOM XML XPath XML XML XSLT XQuery XML Enlace X XML Validador XML DTD XML Esquema XML Servidor XML Ejemplos XML Cuestionario XML Certificado XML

XML-AJAX

AJAX Introducción AJAX XMLHttp Solicitud AJAX Respuesta AJAX Archivo XML AJAX AJAXPHP Ajax ASP Base de datos AJAX Aplicaciones AJAX Ejemplos de AJAX

DOM XML

DOM Introducción Nodos DOM Acceso DOM Información del nodo DOM Lista de nodos DOM Atravesando DOM Navegación DOM DOM obtener valores Nodos de cambio de DOM Eliminar nodos DOM Nodos de reemplazo de DOM DOM Crear nodos Agregar nodos DOM Nodos de clonación de DOM Ejemplos de DOM

Tutorial XPath

Introducción a XPath Nodos XPath Sintaxis XPath Ejes XPath Operadores XPath Ejemplos de XPath

Tutorial XSLT

XSLT Introducción Idiomas XSL Transformación XSLT XSLT <plantilla> XSLT <valor-de> XSLT <para-cada> XSLT <ordenar> XSLT <si> XSLT <elegir> Aplicar XSLT XSLT en el cliente XSLT en el servidor XSLT Editar XML Ejemplos de XSLT

Tutorial de XQuery

Introducción a XQuery Ejemplo de XQuery XQuery FLWOR XQuery HTML Términos de XQuery Sintaxis XQuery XQuery Agregar Seleccionar XQuery Funciones XQuery

DTD XML

Introducción a DTD Bloques de construcción DTD Elementos DTD Atributos DTD Elementos DTD vs Attr Entidades DTD Ejemplos de DTD

Esquema XSD

XSD Introducción XSD Cómo XSD <esquema> Elementos XSD Atributos XSD Restricciones XSD

Complejo XSD

Elementos XSD XSD vacío Solo elementos XSD Solo texto XSD XSD mixto Indicadores XSD XSD <cualquiera> XSD <cualquieratributo> Sustitución XSD Ejemplo XSD

Datos XSD

Cadena XSD Fecha XSD XSD Numérico Miscelánea XSD Referencia XSD

Servicios web

Servicios XML XML WSDL JABÓN XML XML RDF RSS XML

Referencias

Tipos de nodos DOM Nodo DOM Lista de nodos DOM DOM NamedNodeMap Documento DOM Elemento DOM Atributo DOM Texto DOM DOM CDATA Comentario DOM DOM XMLHttpSolicitud Analizador DOM Elementos XSLT Funciones XSLT/XPath

XML DOM - Nodos de navegación


Los nodos se pueden navegar usando relaciones de nodo.

×

Header


Navegación por nodos DOM

Acceder a los nodos en el árbol de nodos a través de la relación entre nodos, a menudo se denomina "nodos de navegación".

En el DOM XML, las relaciones de los nodos se definen como propiedades de los nodos:

  • padreNodo
  • childNodes
  • primer hijo
  • último niño
  • proximo hermano
  • anteriorhermano

La siguiente imagen ilustra una parte del árbol de nodos y la relación entre nodos en books.xml :

Árbol de nodos


DOM - Nodo principal

Todos los nodos tienen exactamente un nodo principal. El siguiente código navega al nodo principal de <libro>:

Ejemplo

function myFunction(xml) {
var xmlDoc = xml.responseXML;
    var x = xmlDoc.getElementsByTagName("book")[0];
    document.getElementById("demo").innerHTML = x.parentNode.nodeName;
}

Ejemplo explicado:

  1. Cargue " books.xml " en xmlDoc
  2. Obtener el primer elemento <libro>
  3. Muestra el nombre del nodo del nodo principal de "x"


Evite los nodos de texto vacíos

Firefox y algunos otros navegadores tratarán los espacios en blanco vacíos o las líneas nuevas como nodos de texto, Internet Explorer no lo hará.

Esto causa un problema al usar las propiedades: firstChild, lastChild, nextSibling, previousSibling.

Para evitar navegar a nodos de texto vacíos (espacios y caracteres de nueva línea entre nodos de elementos), usamos una función que verifica el tipo de nodo:

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

La función anterior le permite usar get_nextSibling( nodo ) en lugar del nodo de propiedad .nextSibling.

Código explicado:

Los nodos de elemento son de tipo 1. Si el nodo hermano no es un nodo de elemento, se mueve a los siguientes nodos hasta que se encuentra un nodo de elemento. De esta forma, el resultado será el mismo tanto en Internet Explorer como en Firefox.


Obtener el primer elemento secundario

El siguiente código muestra el primer nodo de elemento del primer <libro>:

Ejemplo

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        myFunction(this);
    }
};
xhttp.open("GET", "books.xml", true);
xhttp.send();

function myFunction(xml) {
    var xmlDoc = xml.responseXML;
    var x = get_firstChild(xmlDoc.getElementsByTagName("book")[0]);
    document.getElementById("demo").innerHTML = x.nodeName;
}

//check if the first node is an element node
function get_firstChild(n) {
    var y = n.firstChild;
    while (y.nodeType != 1) {
        y = y.nextSibling;
    }
    return y;
}
</script>

</body>
</html>

Producción:

title

Ejemplo explicado:

  1. Cargue " books.xml " en xmlDoc
  2. Use la función get_firstChild en el primer nodo del elemento <libro> para obtener el primer nodo secundario que es un nodo del elemento
  3. Muestra el nombre de nodo del primer nodo secundario que es un nodo de elemento

Más ejemplos


Este ejemplo usa el método lastChild() y una función personalizada para obtener el último nodo secundario de un nodo


Este ejemplo usa el método nextSibling() y una función personalizada para obtener el siguiente nodo hermano de un nodo


Este ejemplo utiliza el método anteriorSibling() y una función personalizada para obtener el nodo hermano anterior de un nodo