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

自分で試してみる