Accesso ai nodi DOM XML

Attraverso DOM, puoi accedere a ogni nodo nel documento XML.

Accesso ai nodi

Puoi accedere ai nodi in tre modi:

  • Utilizzando il metodo getElementsByTagName()
  • Attraverso un ciclo (esplorazione) dell'albero dei nodi
  • Navigando attraverso le relazioni tra i nodi nell'albero dei nodi

Metodo getElementsByTagName()

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

Sintassi

node.getElementsByTagName("tagname");

Esempio

Esempio: 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");

qui,xmlDoc è il documento stesso (nodo documento).

Elenco dei nodi DOM

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

x = xmlDoc.getElementsByTagName("title");

Puoi accedere agli elementi <title> attraverso l'indice. Per accedere al terzo <title>, puoi scrivere:

y = x[2];

Nota:L'indice parte da 0.

Prova a farlo tu stesso

Lunghezza della lista dei nodi DOM

length Proprietà per definire la lunghezza della lista di nodi (numero di nodi).

Puoi usare length Proprietà per iterare attraverso la lista di nodi:

Esempio

var x = xmlDoc.getElementsByTagName("title");
for (i = 0; i < x.length; i++) {
  // Puoi scrivere il codice di elaborazione per ogni nodo qui
  }

Prova a farlo tu stesso

Tipo di nodo

Nodi del 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.

Potrai imparare di più sulle proprietà dei nodi nel capitolo successivo di questa guida.

Prova a farlo tu stesso

Esplorazione dei nodi

Il seguente codice itera sui figli del nodo radice (anche nodi elemento):

Esempio

txt = "";
x = xmlDoc.documentElement.childNodes;
for (i = 0; i < x.length; i++) {
  // Processa solo i nodi elemento (tipo 1)
  if (x[i].nodeType == 1) {
    txt += x[i].nodeName + "<br>";
  }
}

Prova a farlo tu stesso

Esempio di spiegazione:

  1. Supponiamo che tu abbia già caricato "books.xml" Carica in xmlDoc
  2. Ottieni i figli del nodo radice (xmlDoc)
  3. 检查每个子节点的节点类型。如果节点类型为 "1" è un nodo elemento
  4. Se è un nodo elemento, viene outputto il nome del nodo

Navigazione delle relazioni dei nodi

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

Esempio

x = xmlDoc.getElementsByTagName("book")[0];
xlen = x.childNodes.length;
y = x.firstChild;
txt = "";
for (i = 0; i < xlen; i++) {
  // Gestisci solo i nodi elemento (tipo 1)
  if (y.nodeType == 1) {
    txt += y.nodeName + "<br>";
  }
  y = y.nextSibling;
}

Prova a farlo tu stesso

Esempio di spiegazione:

  1. Supponiamo che tu abbia già caricato "books.xml" Carica in xmlDoc
  2. Estrae i figli del primo elemento book
  3. 将 "y" 变量设置为第一个 book 元素的第一个子节点
  4. 对于每个子节点(从第一个子节点 "y" 开始):
  5. 检查每个子节点的节点类型。如果节点类型为 "1",则它是元素节点
  6. 如果是元素节点,则输出该节点的名称
  7. 将 "y" 变量设置为下一个同级节点,并再次运行循环