XML DOM 節(jié)點列表
節(jié)點列表由 getElementsByTagName() 方法和 childNodes 屬性返回。
嘗試一下 - 實例
下面的實例使用 XML 文件books.xml。
函數(shù) loadXMLDoc(),位于外部 JavaScript 中,用于加載 XML 文件。
從第一個 <title> 元素獲取文本
本例使用 getElementsByTagName() 方法從 "books.xml" 中的第一個 <title> 元素獲取文本。
使用 length 屬性遍歷節(jié)點
本例使用節(jié)點列表和 length 屬性來遍歷 "books.xml" 中所有的 <title> 元素。
獲取元素的屬性
本例使用屬性列表從 "books.xml" 中的第一個 <book> 元素獲取屬性。
DOM 節(jié)點列表(Node List)
當(dāng)使用諸如 childNodes 或 getElementsByTagName() 的屬性或方法是,會返回節(jié)點列表對象。
節(jié)點列表對象表示節(jié)點的列表,與 XML 中的順序相同。
節(jié)點列表中的節(jié)點使用從 0 開始的索引號進(jìn)行訪問。
下面的圖像表示 "books.xml" 中 <title> 元素的節(jié)點列表:

下面的代碼片段通過使用 loadXMLDoc() 把 "books.xml" 載入 xmlDoc 中,并返回 "books.xml" 中 title 元素的節(jié)點列表:
x=xmlDoc.getElementsByTagName("title");
在上面的語句執(zhí)行之后,x 是節(jié)點列表對象。
下面的代碼片段從節(jié)點列表(x)中的第一個 <title> 元素返回文本:
實例
<!DOCTYPE html> <html> <head> <script src="loadxmldoc.js"> </script> </head> <body> <script> xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("title"); txt=x[0].childNodes[0].nodeValue; document.write(txt); </script> </body> </html>
運(yùn)行實例 ?
點擊 "運(yùn)行實例" 按鈕查看在線實例
在上面的語句執(zhí)行之后,txt = "Everyday Italian"。
節(jié)點列表長度(Node List Length)
節(jié)點列表對象會保持自身的更新。如果刪除或添加了元素,列表會自動更新。
節(jié)點列表的 length 屬性是列表中節(jié)點的數(shù)量。
下面的代碼片段通過使用 loadXMLDoc() 把 "books.xml" 載入 xmlDoc 中,并返回 "books.xml" 中 <title> 元素的數(shù)量:
x=xmlDoc.getElementsByTagName('title').length;
在上面的語句執(zhí)行之后,x = 4。
節(jié)點列表的長度可用于遍歷列表中所有的元素。
下面的代碼片段使用 length 屬性來遍歷 <title> 元素的列表:
實例
<!DOCTYPE html> <html> <head> <script src="loadxmldoc.js"> </script> </head> <body> <script> 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>"); } </script> </body> </html>
運(yùn)行實例 ?
點擊 "運(yùn)行實例" 按鈕查看在線實例
輸出:
Harry Potter
XQuery Kick Start
Learning XML
實例解釋:
使用 loadXMLDoc() 把 "books.xml" 載入 xmlDoc 中
設(shè)置 x 變量來保存所有 title 元素的節(jié)點列表
從所有 <title> 元素的文本節(jié)點輸出值
DOM 屬性列表(命名節(jié)點圖 Named Node Map)
元素節(jié)點的 attributes 屬性返回屬性節(jié)點的列表。
這被稱為命名節(jié)點圖(Named Node Map),除了方法和屬性上的一些差別以外,它與節(jié)點列表相似。
屬性列表會保持自身的更新。如果刪除或添加屬性,這個列表會自動更新。
下面的代碼片段通過使用 loadXMLDoc() 把 "books.xml" 載入 xmlDoc 中,并返回 "books.xml" 中第一個 <book> 元素的屬性節(jié)點列表:
x=xmlDoc.getElementsByTagName('book')[0].attributes;
在上面的代碼執(zhí)行之后,x.length 等于屬性的數(shù)量,可使用 x.getNamedItem() 返回屬性節(jié)點。
下面的代碼片段顯示一個 book 的 "category" 屬性的值,以及其屬性的數(shù)量:
實例
<!DOCTYPE html> <html> <head> <script src="loadxmldoc.js"> </script> </head> <body> <script> xmlDoc=loadXMLDoc("books.xml"); x=xmlDoc.getElementsByTagName("book")[0].attributes; document.write(x.getNamedItem("category").nodeValue); document.write("<br>" + x.length); </script> </body> </html>
運(yùn)行實例 ?
點擊 "運(yùn)行實例" 按鈕查看在線實例
輸出:
1
實例解釋:
使用 loadXMLDoc() 把 "books.xml" 載入 xmlDoc 中
設(shè)置 x 變量來保存第一個 <book> 元素的所有屬性的一個列表
從 "category" 屬性輸出值
輸出屬性列表的長度