XML DOM 節點列表
getElementsByTagName() 方法和 childNodes 屬性會返回一個節點列表。
DOM Node List
使用 childNodes 或 getElementsByTagName() 等屬性或方法時,會返回一個節點列表物件。
節點列表物件代表一個節點列表,節點順序與 XML 中相同。
節點列表中的節點透過索引號訪問,從 0 開始。
下圖代表 books.xml 中 <title> 元素的節點列表

假設 "books.xml" 已載入到變數 xmlDoc 中。
此程式碼片段在 "books.xml" 中返回一個 title 元素的節點列表
x = xmlDoc.getElementsByTagName("title");
執行上述語句後,x 是一個節點列表物件。
以下程式碼片段從節點列表 (x) 中的第一個 <title> 元素返回文字
執行上述語句後,txt = "Everyday Italian"。
Node List Length
節點列表物件會自行更新。如果刪除或添加了元素,列表會自動更新。
節點列表的 length 屬性是列表中節點的數量。
此程式碼片段返回 "books.xml" 中 <title> 元素的數量
x = xmlDoc.getElementsByTagName('title').length;
執行上述語句後,x 的值將是 4。
可以使用節點列表的長度來迴圈遍歷列表中的所有元素。
此程式碼片段使用 length 屬性迴圈遍歷 <title> 元素列表
示例
x = xmlDoc.getElementsByTagName('title');
xLen = x.length;
for (i = 0; i <xLen; i++) {
txt += x[i].childNodes[0].nodeValue) + " ";
}
輸出
Everyday Italian
Harry Potter
XQuery Kick Start
學習 XML
自己動手試一試 »
示例說明
- 假設 books.xml 已載入到 xmlDoc 中
- 將 x 變數設定為包含所有 title 元素的節點列表
- 從 <title> 元素中收集文字節點值
DOM Attribute List (Named Node Map)
元素節點的 attributes 屬性返回一個屬性節點列表。
這被稱為命名節點對映,它與節點列表類似,但方法和屬性有所不同。
屬性列表會自行更新。如果刪除或添加了屬性,列表會自動更新。
此程式碼片段從 "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;
輸出
cooking 1
自己動手試一試 »
示例說明
- 假設 books.xml 已載入到 xmlDoc 中
- 將 x 變數設定為包含第一個 <book> 元素的所有屬性的列表
- 獲取 "category" 屬性的值以及屬性列表的長度