XML DOM solmujen käsittely

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

"tagname"

下面的例子使用 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");

"tagname"

);

Esimerkki

x.getElementsByTagName("title");

Huomaa, että yllä oleva esimerkki palauttaa vain x-solmun alaiset <title>-elementit. Jos haluat palauttaa kaikki <title>-elementit XML-dokumentista, käytä:

xmlDoc.getElementsByTagName("title");

Tässä xmlDoc on asiakirja itsessään (asiakirjasolmu).

DOM Solmunluettelo

getElementsByTagName() -menetelmä palauttaa solmunluettelon (solmunluettelo). Solmunluettelo on solmujen taulukko. loadXMLDoc() Aseta "books.xml"Lataa xmlDoc

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

Voit tarkastella x:ssä olevaa <title>-elementtiä indeksin avulla. Jos haluat tarkastella kolmatta <title>-elementtiä, voit kirjoittaa:

y=x[2];

TIY

Huomautus:Alkukohdat alkavat 0:sta.

Opit lisää solmunluettelosta hieman myöhemmin tässä opastuksessa.

DOM Solmunluettelo Pituus

Length-ominaisuus määrittää solmunluettelon pituuden (eli solmujen määrän).

Voit toistaa solmunluettelon käyttämällä length-ominaisuutta:

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

Esimerkki selityksestä:

  1. Käytä loadXMLDoc() Aseta "books.xml"Lataa xmlDoc
  2. Hanki kaikki <title>-elementtisolmut
  3. Tulosta jokaisen <title>-elementin tekstin solmun arvo

TIY

Solmun tyyppi

XML-dokumentin documentElement Ominaisuus on juurisolmu.

solmun nodeName Ominaisuus on solmun nimi.

solmun nodeType Ominaisuus on solmun tyyppi.

Opit lisää solmun ominaisuuksista seuraavassa osassa tätä opastusta.

TIY

Kierretään solmuja

Seuraavaa koodia toistetaan juurisolmun alisolmut, jotka ovat elementtisolmuja:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.documentElement.childNodes;
for (i=0;i<x.length;i++)
{ 
  if (x[i].nodeType==1)
  {//Käsittele vain elementtisolut (tyyppi 1) 
  document.write(x[i].nodeName);
  document.write("<br />");
  } 
}

Esimerkki selityksestä:

  1. Käyttämällä loadXMLDoc() Aseta "books.xml"Lataa xmlDoc:iin
  2. Hanki juurisolmun alisolmut
  3. Tarkista jokaisen alikohdan solmun tyyppi. Jos solmun tyyppi on "1", se on elementtisolmu
  4. Jos solmu on elementti, tulosta solmun nimi

TIY

Navigointi solmujen välisissä suhteiden avulla

Seuraavaa koodia käytetään solmujen välisissä suhteiden avulla solmutréenissä navigointiin:

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)
  {//Käsittele vain elementtisolut (tyyppi 1)
  document.write(y.nodeName + "<br />");
  }
y=y.nextSibling;
}
  1. Käyttämällä loadXMLDoc() Aseta "books.xml"Lataa xmlDoc:iin
  2. Hanki ensimmäisen "book"-elementin lapsisolmut
  3. Aseta "y"-muuttuja ensimmäisen "book"-elementin ensimmäiseen lapsisolmuun
  4. Tarkista jokaisen lapsisolmun solmun tyyppi, jos solmun tyyppi on "1", niin se on elementti
  5. Jos solmu on elementti, tulosta solmun nimi
  6. Aseta "y"-muuttuja seuraavaan samantasoiseen solmuun ja suorita silmukka uudelleen

TIY