Accesso ai Nodi XML DOM

Attraverso il DOM, puoi accedere a ogni nodo del documento XML.

Esempio

Esempio di file XML sottostante books.xml.

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

Accedere ai nodi utilizzando l'indice della lista dei nodi
In questo esempio, il metodo getElementsByTagname() viene utilizzato per ottenere il terzo elemento <title> del file "books.xml".
Ciclare gli elementi utilizzando l'attributo length
In questo esempio, l'attributo length viene utilizzato per ciclare tutti gli elementi <title> del file "books.xml".
Visualizzare il tipo di nodo dell'elemento
In questo esempio, l'attributo nodeType viene utilizzato per ottenere il tipo di nodo dell'elemento radice del file "books.xml".
Ciclare gli elementi
In questo esempio, l'attributo nodeType viene utilizzato per gestire gli elementi del file "books.xml".
Ciclare gli elementi utilizzando le relazioni dei nodi
In questo esempio, l'attributo nodeType e l'attributo nextSibling vengono utilizzati per gestire gli elementi del file "books.xml".

Accesso ai nodi

Puoi accedere ai nodi in tre modi:

  1. attraverso l'uso del metodo getElementsByTagName()
  2. attraverso un ciclo (esplorazione) delbero dei nodi
  3. navigando nelbero dei nodi utilizzando le relazioni tra i nodi

Metodo getElementsByTagName()

getElementsByTagName() restituisce tutti gli elementi con il nome di etichetta specificato.

sintassi

node.getElementsByTagName("tagname");

Esempio

L'esempio seguente restituisce tutti gli elementi <title> sotto l'elemento x:

x.getElementsByTagName("title");

Nota: l'esempio sopra restituisce solo gli elementi <title> sotto il nodo x. Per restituire tutti gli elementi <title> nel documento XML, utilizzare:

xmlDoc.getElementsByTagName("title");

In questo caso, xmlDoc è il documento stesso (nodo documento).

Lista di nodi DOM

Il metodo getElementsByTagName() restituisce una lista di nodi (lista di nodi). La lista di nodi è un array di nodi.

Il codice seguente utilizza loadXMLDoc() Imposta "books.xml"Carica xmlDoc in, quindi memorizza una lista di nodi <title> nella variabile x:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title");

Puoi accedere agli elementi <title> all'interno di x tramite l'indice. Per accedere al terzo <title>, puoi scrivere:

y=x[2];

TIY

Nota:Gli indici iniziano da 0.

In sezioni successive di questo tutorial, imparerai di più sulle liste di nodi.

Lunghezza della lista di nodi DOM

L'attributo length definisce la lunghezza della lista di nodi (cioè il numero di nodi).

Puoi ciclare attraverso una lista di nodi utilizzando l'attributo length:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title");
for (i=0;i<x.length;i++)
  { 
  document.write(x[i].childNodes[0].nodeValue);
  document.write("<br />");
  }

Esempio di spiegazione:

  1. Usa loadXMLDoc() Imposta "books.xml"Carica xmlDoc
  2. Ottieni tutti gli elementi <title>.
  3. Esporta il valore del nodo testo di ogni elemento <title>.

TIY

Node Type

Documento XML documentElement Proprietà è il nodo radice.

Proprietà del nodo nodeName Proprietà è il nome del nodo.

Proprietà del nodo nodeType Le proprietà sono il tipo del nodo.

Imparerai di più sulle proprietà dei nodi nella prossima sezione di questo tutorial.

TIY

Esplora i nodi

Il codice seguente cicla attraverso i figli del nodo radice, che sono anche nodi elemento:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.documentElement.childNodes;
for (i=0;i<x.length;i++)
{ 
  if (x[i].nodeType==1)
  {//Process only element nodes (type 1) 
  document.write(x[i].nodeName);
  document.write("<br />");
  } 
}

Esempio di spiegazione:

  1. Utilizzando loadXMLDoc() Imposta "books.xml" carica in xmlDoc
  2. Ottieni i figli del nodo radice
  3. Controlla il tipo di nodo di ogni sotto-nodo. Se il tipo di nodo è "1", è un nodo elemento.
  4. Se è un nodo elemento, stampa il nome del nodo

TIY

Navigazione utilizzando le relazioni tra i nodi

Il seguente codice utilizza le relazioni tra i nodi per navigare nell'albero dei nodi:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("book")[0].childNodes;
y=xmlDoc.getElementsByTagName("book")[0].firstChild;
for (i=0;i<x.length;i++)
{
if (y.nodeType==1)
  {//Process only element nodes (type 1)
  document.write(y.nodeName + "<br />");
  }
y=y.nextSibling;
}
  1. Utilizzando loadXMLDoc() Imposta "books.xml" carica in xmlDoc
  2. Ottieni il primo figlio dell'elemento "book"
  3. Imposta la variabile "y" al primo figlio dell'elemento "book"
  4. Controlla il tipo di nodo di ogni nodo figlio, se il tipo di nodo è "1", è un nodo elemento
  5. Se è un nodo elemento, stampa il nome del nodo
  6. Imposta la variabile "y" al nodo同级 successivo e esegui di nuovo il ciclo

TIY