XML DOM - 訪問節點
使用 DOM,您可以訪問 XML 文件中的每個節點。
訪問節點
您可以透過三種方式訪問節點:
- 透過使用 getElementsByTagName() 方法
- 透過迴圈(遍歷)節點樹
- 透過使用節點關係導航節點樹
getElementsByTagName() 方法
getElementsByTagName() 返回所有具有指定標籤名的元素。
語法
node.getElementsByTagName("tagname");
示例
以下示例返回 x 元素下的所有 <title> 元素
x.getElementsByTagName("title");
請注意,上面的示例僅返回 x 節點下的 <title> 元素。要返回 XML 文件中的所有 <title> 元素,請使用
xmlDoc.getElementsByTagName("title");
其中 xmlDoc 是文件本身(文件節點)。
DOM 節點列表
getElementsByTagName() 方法返回一個節點列表。節點列表是節點的陣列。
x = xmlDoc.getElementsByTagName("title");
x 中的 <title> 元素可以透過索引號訪問。要訪問第三個 <title>,您可以這樣寫:
y = x[2];
注意:索引從 0 開始。
DOM 節點列表長度
length 屬性定義了節點列表的長度(節點的數量)。
您可以透過使用 length 屬性遍歷節點列表
示例
var x = xmlDoc.getElementsByTagName("title");
for (i = 0; i <x.length; i++) {
// 對每個節點執行一些操作
}
自己動手試一試 »
節點型別
XML 文件的 documentElement 屬性是根節點。
節點的 nodeName 屬性是節點的名稱。
節點的 nodeType 屬性是節點的型別。
您將在本教程的下一章中瞭解更多關於節點屬性的資訊。
遍歷節點
以下程式碼遍歷根節點的子節點,這些子節點也是元素節點
示例
txt = "";
x = xmlDoc.documentElement.childNodes;
for (i = 0; i <x.length; i++) {
// 只處理元素節點(型別 1)
if (x[i].nodeType == 1) {
txt += x[i].nodeName + "<br>";
}
}
自己動手試一試 »
示例說明
- 假設您已將 "books.xml" 載入到 xmlDoc 中
- 獲取根元素 (xmlDoc) 的子節點
- 對於每個子節點,檢查節點型別。如果節點型別為 "1",則它是一個元素節點
- 如果節點是元素節點,則輸出節點的名稱
導航節點關係
以下程式碼使用節點關係導航節點樹
示例
x = xmlDoc.getElementsByTagName("book")[0];
xlen = x.childNodes.length;
y = x.firstChild;
txt = "";
for (i = 0; i <xlen; i++) {
// 只處理元素節點(型別 1)
if (y.nodeType == 1) {
txt += y.nodeName + "<br>";
}
y = y.nextSibling;
}
自己動手試一試 »
示例說明
- 假設您已將 "books.xml" 載入到 xmlDoc 中
- 獲取第一個 book 元素的子節點
- 將“y”變數設定為第一個 book 元素的第一個子節點
- 對於每個子節點(從第一個子節點“y”開始)
- 檢查節點型別。如果節點型別為“1”,則它是一個元素節點
- 如果節點是元素節點,則輸出節點的名稱
- 將“y”變數設定為下一個兄弟節點,並再次執行迴圈