XML DOM 節點列表
getElementsByTagName()
方法和 childNodes
屬性可返回節點的列表。
DOM 節點列表
當使用 childNodes
或 getElementsByTagName()
等屬性或方法時,將返回 NodeList 對象。
NodeList 對象表示節點的列表,其順序與 XML 中的順序相同。
節點列表中的節點可通過從 0 開始的索引號進行訪問。
下圖表示 books.xml 中 <title> 元素的節點列表:

假設 "books.xml" 已被加載到變量 xmlDoc 中。
此代碼片段返回 "books.xml" 中 title 元素的節點列表:
x = xmlDoc.getElementsByTagName("title");
執行完上面的語句后,x 就成為一個 NodeList 對象。
以下代碼片段返回節點列表 (x) 中第一個 <title> 元素的文本:
實例
var txt = x[0].childNodes[0].nodeValue;
執行上述語句后,txt = "雅舍談吃"。
節點列表長度
NodeList 對象會保持自身的更新。如果刪除或添加了元素,列表會自動更新。
節點列表的 length
屬性是列表中節點的數量。
這段代碼返回 "books.xml" 中 <title> 元素的數量:
x = xmlDoc.getElementsByTagName('title').length;
上面的語句執行后,x
的值為 5。
節點列表的長度可用于循環遍歷列表中的所有元素。
這段代碼使用 length
屬性循環來遍歷 <title> 元素列表:
實例
x = xmlDoc.getElementsByTagName('title'); xLen = x.length; for (i = 0; i <xLen; i++) { txt += x[i].childNodes[0].nodeValue) + " "; }
例子解釋:
- 假設 books.xml 已被加載到
xmlDoc
中 - 設置 x 變量以保存所有 title 元素的節點列表
- 從 <title> 元素中獲取文本節點的值
DOM 屬性列表(命名節點映射)
元素節點的 attributes
屬性返回屬性節點的列表。
這被稱為命名節點映射(named node map),與節點列表類似,只是方法和屬性有所不同。
屬性列表也會保持最新。如果刪除或添加屬性,列表會自動更新。
這段代碼從 "books.xml" 中的第一個 <book> 元素返回屬性節點列表:
x = xmlDoc.getElementsByTagName('book')[0].attributes;
上面的代碼執行后,x.length
等于屬性的數量,可使用 x.getNamedItem()
返回一個屬性節點。
這段代碼獲取第一本書的 "category" 屬性的值,以及屬性的數量:
實例
x = xmlDoc.getElementsByTagName("book")[0].attributes; txt = x.getNamedItem("category").nodeValue + " " + x.length;
例子解釋:
- 假設 books.xml 被加載到
xmlDoc
中 - 設置 x 變量以保存第一個 <book> 元素的所有屬性的列表
- 獲取 "category" 屬性的值以及屬性列表的長度