2017-09-16 35 views
0

を使用してXMLの要素を取得します。次のように私は、XMLを持っているのjavascript

var a = document.getElementsByTagName("a"); 
var d = a[1].getElementsByTagName("d")[0].firstChild.data; 
document.write("d = " + d); 

結果はd = 0ですが、私の予想結果はd = 99です。

お願いします。

私は基本的にあなたがa[2]を探している私は、入力インデックス2

+0

[の可能性のある重複https://stackoverflow.com/questions/4495569/how-do-i-retrieve-the-value-of-a-specific-xml-node-by-path – Niladri

+1

可能な重複特定のXMLノードの値をパスでどのように取得するのですか?](https://stackoverflow.com/questions/4495569/how-do-i-retrieve-the-value-of-a-specific-xml-node-バイパス) – Bakudan

答えて

0

にしたくないだけで、インデックス1 (a[1])入力したい:ここ

<a> <-- a[0] 
    <a> <-- a[1] 
    <d>0</d> 
    </a> 
    <a> <-- a[2] 
    <d>99</d> 
    </a> 
</a> 

はアップデートです:

var a = document.getElementsByTagName("a"); 
var d = a[2].getElementsByTagName("d")[0].firstChild.data; 
      ^---- this is what changed 
document.write("d = " + d); 
1

DOMParser関数を使用してxmlDocを作成し、そこから必要な値を読み取ることができます。問題はあなたの要素セレクタにありました。

var text = "<a> <a> <d>0</d></a><a><d>99</d></a></a>" 
parser = new DOMParser(); 
xmlDoc = parser.parseFromString(text,"text/xml"); 
var dNode = xmlDoc.querySelectorAll('a a:last-child d')[0]; 
var dNodeValue = dNode.innerHTML; 

console.log(dNodeValue); 
// 99