XML DOM access node

通过 DOM,您能够访问 XML 文档中的每个节点。

Exempel

下面的例子使用 XML 文件 books.xml.

函数 loadXMLDoc(),位于外部 JavaScript 中,用于加载 XML 文件。

使用节点列表中的下标号来访问节点
本例使用 getElementsByTagname() 方法来获得 "books.xml" 中的第三个 <title> 元素。
使用 length 属性来循环节点
本例使用 length 属性来循环 "books.xml" 中的所有 <title> 元素。
查看元素的节点类型
本例使用 nodeType 属性来获得 "books.xml" 中根元素的节点类型。
循环元素节点
本例使用 nodeType 属性来处理 "books.xml" 中的元素节点。
使用节点的关系来循环元素节点
本例使用 nodeType 属性和 nextSibling 属性来处理 "books.xml" 中的元素节点。

访问节点

您可以通过三种方法来访问节点:

  1. 通过使用 getElementsByTagName() 方法
  2. 通过循环(遍历)节点树
  3. 通过利用节点的关系在节点树中导航

getElementsByTagName() 方法

getElementsByTagName() 返回拥有指定标签名的所有元素。

语法

node.getElementsByTagName("tagname");

Exempel

Nedanstående exempel returnerar alla <title>-element under x:

x.getElementsByTagName("title");

Observera att det ovanstående exemplet endast returnerar <title>-element under x. För att returnera alla <title>-element i XML-dokumentet, använd:

xmlDoc.getElementsByTagName("title");

Här är xmlDoc dokumentet själv (document node).

DOM Node List

getElementsByTagName() metoden. Nodlistan är en array av noder.

Nedanstående kod returnerar en nodlista (node list) genom att använda loadXMLDoc() Sätt "books.xml"Ladda xmlDoc i, och lagra en lista över <title>-noder i variabeln x:

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

Du kan komma åt <title>-element i x genom att använda index. För att komma åt tredje <title>, kan du skriva:

y=x[2];

TIY

Kommentar:Index börjar vid 0.

Du kommer att lära dig mer om Node List i senare kapitel i denna tutorial.

DOM Node List Length

length-attributet definierar nodlistans längd (dvs. antalet noder).

Du kan loopa igenom en nodlista genom att använda length-attributet:

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 />");
  }

Exempel förklaring:

  1. Använd loadXMLDoc() Sätt "books.xml"Ladda xmlDoc
  2. Få alla <title>-elementnoder
  3. Skriv ut värdet för varje textnod för <title>-elementet

TIY

Node Type

XML-dokumentets documentElement egenskapen är rodnoden.

egenskapen för noden nodeName egenskapen är nodens namn.

egenskapen för noden nodeType Egenskaper är nodtypen.

Du kommer att lära dig mer om nodattribut i nästa avsnitt i denna tutorial.

TIY

Genomgå noden

Nedanstående kod loopar igenom rodnodens undernoder, som också är elementnoder:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.documentElement.childNodes;
for (i=0;i<x.length;i++)
{ 
  om (x[i].nodeType==1)
  {//Bearbeta endast elementnoder (typ 1) 
  document.write(x[i].nodeName);
  document.write("<br />");
  } 
}

Exempel förklaring:

  1. Genom att använda loadXMLDoc() Sätt "books.xml"Ladda xmlDoc"
  2. Få undernoderna till rodnoden
  3. Kontrollera nodtypen för varje undernod. Om nodtypen är "1", är det en elementnod.
  4. Om det är en elementnod, skriv ut nodens namn

TIY

Navigera med hjälp av nodrelationer

Följande kod navigerar genom nodrelationerna i nodträdet:

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)
  {//Bearbeta endast elementnoder (typ 1)
  document.write(y.nodeName + "<br />");
  }
y=y.nextSibling;
}
  1. Genom att använda loadXMLDoc() Sätt "books.xml"Ladda xmlDoc"
  2. Få den första "book"-elementets undernod
  3. Sätt variabeln "y" till den första "book"-elementets första undernod
  4. Kontrollera varje undernodens nodtyp, om nodtypen är "1", är det en elementnod
  5. Om det är en elementnod, skriv ut nodens namn
  6. Sätt variabeln "y" till nästa jämlik nod och kör loopen igen

TIY