Atributo firstChild de XML DOM

Definición y uso

firstChild Esta propiedad devuelve el primer nodo hijo del elemento seleccionado

Si el nodo seleccionado no tiene nodos hijos, esta propiedad devuelve NULL.

Sintaxis

elementNode.firstChild
Consejos y Notas

Nota:Firefox y la mayoría de los otros navegadores considerarán los espacios en blanco o saltos de línea como nodos de texto, mientras que Internet Explorer no lo hará. Por lo tanto, en el siguiente ejemplo, utilizamos una función para verificar el tipo de nodo del primer nodo hijo.

El nodeType de los nodos de elemento es 1, por lo que si el primer nodo hijo no es un nodo de elemento, se desplazará al siguiente nodo y verificará si ese nodo es un nodo de elemento. Esto continuará hasta encontrar el primer nodo hijo (debe ser un nodo de elemento). De esta manera, el resultado es correcto en todos los navegadores.

Consejo:Para obtener más información sobre las diferencias entre navegadores, visite la sección DOM Navegadores del tutorial XML DOM.

Ejemplo

El siguiente código carga "books.xml" en xmlDoc y obtiene el primer nodo hijo:

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
   if (this.readyState == 4 && this.status == 200) {
       myFunction(this);
   }
};
xhttp.open("GET", "books.xml", true);
xhttp.send();
// Verificar si el primer nodo es un nodo de elemento
function get_firstchild(n) {
    var x = n.firstChild;
    while (x.nodeType != 1) {
        x = x.nextSibling;
    }
    return x;
}
function myFunction(xml) {
    var x, i, txt, firstNode, xmlDoc;
    xmlDoc = xml.responseXML;
    x = xmlDoc.documentElement;
    txt = "";
    firstNode = get_firstchild(x);
    for (i = 0; i < firstNode.childNodes.length; i++) {
        if (firstNode.childNodes[i].nodeType == 1) {
            // Solo se procesan los nodos de elemento
            txt += firstNode.childNodes[i].nodeName +""}
            " = " +
            firstNode.childNodes[i].childNodes[0].nodeValue + "<br>";
        }
    }
    document.getElementById("demo").innerHTML = txt;
}

Prueba personalmente