通過 DOM,您能夠訪問 XML 文檔中的每個(gè)節(jié)點(diǎn)。
下面的例子使用 XML 文件 books.xml。
函數(shù) loadXMLDoc(),位于外部 JavaScript 中,用于加載 XML 文件。
您可以通過三種方法來訪問節(jié)點(diǎn):
getElementsByTagName() 返回?fù)碛兄付?biāo)簽名的所有元素。
node.getElementsByTagName("tagname");
下面的例子返回 x 元素下的所有 <title> 元素:
x.getElementsByTagName("title");
請(qǐng)注意,上面的例子僅返回 x 節(jié)點(diǎn)下的 <title> 元素。要返回 XML 文檔中的所有 <title> 元素,請(qǐng)使用:
xmlDoc.getElementsByTagName("title");
在這里,xmlDoc 就是文檔本身(文檔節(jié)點(diǎn))。
getElementsByTagName() 方法返回節(jié)點(diǎn)列表 (node list)。節(jié)點(diǎn)列表是節(jié)點(diǎn)的數(shù)組。
下面的代碼通過使用 loadXMLDoc() 把 "books.xml" 載入 xmlDoc 中,然后在變量 x 中存儲(chǔ) <title> 節(jié)點(diǎn)的一個(gè)列表:
xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("title");
可通過下標(biāo)訪問 x 中的 <title> 元素。要訪問第三個(gè) <title>,您可以編寫:
y=x[2];
注釋:下標(biāo)以 0 起始。
在本教程中稍后的章節(jié),您將學(xué)到更多有關(guān) Node List 的知識(shí)。
length 屬性定義節(jié)點(diǎn)列表的長(zhǎng)度(即節(jié)點(diǎn)的數(shù)目)。
您能夠通過使用 length 屬性來循環(huán)一個(gè)節(jié)點(diǎn)列表:
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 />"); }
XML 文檔的 documentElement 屬性是根節(jié)點(diǎn)。
節(jié)點(diǎn)的 nodeName 屬性是節(jié)點(diǎn)的名稱。
節(jié)點(diǎn)的 nodeType 屬性是節(jié)點(diǎn)的類型。
您將在本教程的下一節(jié)中學(xué)習(xí)更多有關(guān)節(jié)點(diǎn)屬性的知識(shí)。
下面的代碼循環(huán)根節(jié)點(diǎn)的子節(jié)點(diǎn),同時(shí)也是元素節(jié)點(diǎn):
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 />"); } }
下面的代碼通過利用節(jié)點(diǎn)的關(guān)系在節(jié)點(diǎn)樹中進(jìn)行導(dǎo)航:
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; }
如對(duì)本文有疑問,請(qǐng)?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會(huì)為你解答!! 點(diǎn)擊進(jìn)入論壇