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>";
}

親自試一試