XML DOM 獲取節點值
nodeValue
屬性用于獲取節點的文本值。
getAttribute()
方法返回屬性的值。
獲取元素的值
在 DOM 中,一切都是節點。元素節點沒有文本值。
元素節點的文本值存儲在子節點中。該節點被稱為文本節點。
如需獲得元素的文本值,您必須檢索元素的文本節點的值。
也就是說,獲取元素文本的方法,就是獲取這個子節點(文本節點)的值。
getElementsByTagName 方法
getElementsByTagName()
方法返回包含擁有指定標簽名的所有元素的節點列表,其中的元素的順序是它們在源文檔中出現的順序。
假設 books.xml 已加載到 xmlDoc 中。
此代碼檢索第一個 <title> 元素:
var x = xmlDoc.getElementsByTagName("title")[0];
ChildNodes 屬性
childNodes
屬性返回元素的子節點的列表。
下面的代碼檢索第一個 <title> 元素的文本節點:
x = xmlDoc.getElementsByTagName("title")[0]; y = x.childNodes[0];
nodeValue 屬性
nodeValue
屬性返回文本節點的文本值。
下面的代碼檢索第一個 <title> 元素的文本節點的文本值:
實例
x = xmlDoc.getElementsByTagName("title")[0]; y = x.childNodes[0]; z = y.nodeValue;
z 中的結果:雅舍談吃
完整實例
例子 1
<!DOCTYPE html> <html> <body> <p id="demo"></p> <script> var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { myFunction(this); } }; xhttp.open("GET", "books.xml", true); xhttp.send(); function myFunction(xml) { var xmlDoc = xml.responseXML; var x = xmlDoc.getElementsByTagName('title')[0]; var y = x.childNodes[0]; document.getElementById("demo").innerHTML = y.nodeValue; } </script> </body> </html>
例子 2
循環遍歷所有 <title> 元素:
x = xmlDoc.getElementsByTagName('title'); for (i = 0; i < x.length; i++) { txt += x[i].childNodes[0].nodeValue + "<br>"; }
獲取屬性的值
在 DOM 中,屬性也是節點。與元素節點不同的是,屬性節點有文本值。
獲取屬性值的方法是獲取其文本值。
可以通過使用 getAttribute()
方法或屬性節點的 nodeValue
屬性來完成這個任務。
獲取屬性值 - getAttribute()
getAttribute()
方法返回屬性的值。
下面的代碼檢索第一個 <title> 元素的 "lang"
屬性的文本值:
例子 1
x = xmlDoc.getElementsByTagName("title")[0]; txt = x.getAttribute("lang");
例子 2
循環遍歷所有 <book> 元素并獲取它們的 "category" 屬性:
x = xmlDoc.getElementsByTagName("book"); for (i = 0; i < x.length; i++) { txt += x[i].getAttribute("category") + "<br>"; }
獲取屬性值 - getAttributeNode()
getAttributeNode()
方法返回屬性節點。
下面的代碼檢索第一個 <title> 元素的 "lang"
屬性的文本值:
例子 1
x = xmlDoc.getElementsByTagName("title")[0]; y = x.getAttributeNode("lang"); txt = y.nodeValue;
例子 2
循環遍歷所有 <book> 元素并獲取它們的 "category" 屬性:
x = xmlDoc.getElementsByTagName("book"); for (i = 0; i < x.length; i++) { txt += x[i].getAttributeNode("category").nodeValue + "<br>"; }