Gli ultimi tutorial di sviluppo web
 

XML DOM - Navigazione Nodi


I nodi possono essere navigati usando le relazioni dei nodi.

×

Intestazione


Navigazione nodi DOM

Accesso nodi l'albero dei nodi attraverso il rapporto tra i nodi, è spesso chiamato "navigating nodes" .

Nel XML DOM, rapporti nodo sono definite come proprietà ai nodi:

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

L'immagine seguente illustra una parte dell'albero nodo e il rapporto tra i nodi di books.xml :

Node tree


DOM - nodo genitore

Tutti i nodi hanno esattamente un nodo padre. Il codice seguente passa alla nodo principale <book> :

Esempio

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

Esempio spiegato:

  1. Load " books.xml " in xmlDoc
  2. Prendi il primo <book> elemento
  3. Uscita il nome del nodo del nodo padre di "x"

Evitare di nodi di testo vuoti

Firefox e alcuni altri browser, tratteranno vuoti bianchi-spazi o nuove linee come nodi di testo, Internet Explorer non lo faranno.

Ciò causa un problema quando si utilizzano le proprietà: firstChild, lastChild, nextSibling, previousSibling.

Per evitare la navigazione verso nodi di testo vuoti (spazi e nuove linee caratteri tra nodi elemento), usiamo una funzione che controlla il tipo di nodo:

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

La funzione di cui sopra consente di utilizzare get_nextSibling( node ) al posto della proprietà node .nextSibling.

Codice spiegato:

nodi elemento sono di tipo 1. Se il nodo di pari livello non è un nodo elemento, si sposta ai nodi successivi fino a quando viene trovato un nodo elemento. In questo modo, il risultato sarà lo stesso sia in Internet Explorer e Firefox.


Prendi il primo elemento figlio

Il seguente codice mostra il primo nodo elemento del primo <book> :

Esempio

<!DOCTYPE html>
<html>
<body>

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

<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
myFunction(xhttp);
}
};
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>

Produzione:

title
Prova tu stesso "

Esempio spiegato:

  1. Load " books.xml " in xmlDoc
  2. Utilizzare la funzione get_firstChild sul primo <book> nodo elemento per ottenere il primo nodo figlio che è un nodo elemento
  3. Uscita il nome del nodo di primo nodo figlio che è un nodo elemento

Esempi

Altri esempi

lastChild()
Questo esempio utilizza il lastChild() metodo e una funzione personalizzata per ottenere l'ultimo nodo figlio di un nodo

nextSibling()
Questo esempio utilizza il nextSibling() metodo e una funzione personalizzata per ottenere il nodo di pari livello successivo di un nodo

previousSibling()
Questo esempio utilizza il previousSibling() metodo e una funzione personalizzata per ottenere il nodo fratello precedente di un nodo