Posizionamento dei nodi XML DOM

i nodi possono essere localizzati utilizzando le relazioni tra i nodi.

Esempio

Esempio seguente utilizza file XML books.xml.

Funzione loadXMLDoc()posizionato all'esterno del JavaScript, utilizzato per caricare file XML.

Ricevere il nodo padre del nodo
Questo esempio utilizza l'attributo parentNode per ottenere il nodo genitore.
Ottieni il primo figlio del nodo
Questo esempio utilizza il metodo firstChild() e una funzione personalizzata per ottenere il primo figlio di un nodo.

Navigazione dei nodi DOM

Accedi ai nodi dell'albero dei nodi attraverso le relazioni tra i nodi, di solito chiamato navigazione dei nodi ("navigating nodes").

Nell'XML DOM, le relazioni tra i nodi sono definite come attributi del nodo:

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

L'immagine seguente mostra books.xml Una parte dell'albero dei nodi e spiega le relazioni tra i nodi:

Albero di nodi DOM

DOM - nodo genitore

Tutti i nodi hanno un solo nodo genitore. Il seguente codice localizza il nodo genitore di <book>:

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

Esempio di spiegazione:

  • Utilizzando loadXMLDoc() Metti "books.xml" carica in xmlDoc
  • Ottieni l'elemento <book> primo
  • Output del nome del nodo genitore del "x"

TIY

Evitare nodi di testo vuoti

Firefox e altri browser considerano i blank space e i newline come nodi di testo, mentre IE non lo fa.

Questo può causare problemi quando si utilizzano i seguenti attributi: firstChild, lastChild, nextSibling, previousSibling.

Per evitare di localizzare nodi di testo vuoti (spazi e segni di newline tra i nodi elemento), utilizziamo una funzione per controllare il tipo del nodo:

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

Con la funzione sopra, possiamo utilizzare get_nextSibling(node) al posto dell'attributo node.nextSibling.

Spiegazione del codice:

Il tipo del nodo elemento è 1. Se il nodo同级 non è un nodo elemento, spostati al nodo successivo fino a trovare un nodo elemento. In questo modo, sia in IE che in Firefox si ottiene lo stesso risultato.

Ottieni il primo elemento

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

<html>
<head>
<script type="text/javascript" src="loadxmldoc.js">
</script>
<script type="text/javascript">
//controlla se il primo nodo è un nodo elemento
funzione 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>

Output:

title

Esempio di spiegazione:

  • Utilizzando loadXMLDoc() Metti "books.xml"Carica in xmlDoc"
  • Usa la funzione get_firstChild su <book> per ottenere il primo figlio del nodo di elemento
  • Output del nome del primo figlio (nodo di elemento)

TIY

Esempio

Esempio seguente utilizza funzioni simili:

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