I nodi possono essere navigati usando le relazioni dei nodi.
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 :
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:
- Load " books.xml " in xmlDoc
- Prendi il primo <book> elemento
- 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:
- Load " books.xml " in xmlDoc
- Utilizzare la funzione get_firstChild sul primo <book> nodo elemento per ottenere il primo nodo figlio che è un nodo elemento
- Uscita il nome del nodo di primo nodo figlio che è un nodo elemento

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