XMLDOMはノード値を取得します
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の結果:「毎日がイタリアン」
完全な例
例
<!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>
すべての<title>要素をループする:
属性の値を取得する
DOMでは、属性はノードです。要素ノードとは異なり、属性ノードにはテキスト値があります。
属性の値を取得する方法は、そのテキスト値を取得することです。
これは、getAttribute()メソッドを使用するか、属性ノードのnodeValueプロパティを使用して実行できます。
属性値を取得する-getAttribute()
getAttribute()メソッドは、属性の値を返します。
次のコードは、最初の<title>要素の「lang」属性のテキスト値を取得します。
例
x = xmlDoc.getElementsByTagName("title")[0];
txt = x.getAttribute("lang");
txtの結果: "en"
すべての<book>要素をループして、それらの「カテゴリ」属性を取得します。
属性値を取得する-getAttributeNode()
getAttributeNode()メソッドは属性ノードを返します。
次のコードは、最初の<title>要素の「lang」属性のテキスト値を取得します。
例
x = xmlDoc.getElementsByTagName("title")[0];
y = x.getAttributeNode("lang");
txt = y.nodeValue;
結果はtxt = "en"
すべての<book>要素をループして、それらの「カテゴリ」属性を取得します。