2014-01-05 60 views
0

我有一個看起來像這樣如何獲得孩子的subchild在一個xml在JavaScript

 <?xml version="1.0" encoding="utf-8"?> 
<crossword1> 
    <clues> 
     <clue> 
     Man's best friend 
     </clue> 
     <answer> 
     dog 
     </answer> 
     <clue> 
     Likes to chase mice 
     </clue> 
     <answer> 
     cat 
     </answer> 
     <clue> 
     Flying mammal 
     </clue> 
     <answer> 
     bat 
     </answer> 
     <clue> 
     Has a trump 
     </clue> 
     <answer> 
     elephant 
     </answer> 
     <clue> 
     Large marsupial 
     </clue> 
     <answer> 
     kangaroo 
     </answer> 
    </clues> 
    <puzzle> 
     <acrossClues> 
      <clue>Large marsupial</clue> 
      <answer>kangaroo</answer> 
      <x>0</x> 
      <y>5</y> 
      <clue>Likes to chase mice</clue> 
      <answer>cat</answer> 
      <x>2</x> 
      <y>7</y> 
     </acrossClues> 
     <downClues> 
      <clue>Has a trump</clue> 
      <answer>elephant</answer> 
      <x>4</x> 
      <y>0</y> 
      <clue>Flying mammal</clue> 
      <answer>bat</answer> 
      <x>1</x> 
      <y>4</y> 
      <clue>Man's best friend</clue> 
      <answer>dog</answer> 
      <x>7</x> 
      <y>4</y> 
     </downClues> 

    </puzzle> 
    <width>80</width> 
    <height>80</height> 
    <preview>0</preview> 

</crossword1> 

我想只有acrossClues標籤的線索的XML(這樣的線索acrossClues的兒童)。 到現在爲止,我有這樣的:

var clues=new Array(); 
    var xml=loadXMLDoc("data/rebus1.xml"); 
    var x=xml.getElementsByTagName("acrossClues")[0].childNodes; 

    for (i=0;i<x.length;i++) 
    { 
     clues.push(x[i].childNodes.item(0)); 

    } 
    alert(clues[0]); 

的問題是,警報(線索[0])給了我零.... 這是爲什麼? 謝謝。

+0

'clues'是空的,因爲your're嘗試添加選擇'x'節點的子節點沒有了。跳過'.childNodes.item(0)'會更有意義,但它仍然沒有考慮到文本節點 - 但在答案部分已經有了一個解決方案。 – guessimtoolate

回答

1

使用children代替childNodes嘗試,因爲chidlNodes將包括文本節點,以及如果你的XML格式化,那麼實際元素節點之間的所有他連續的白色空間成爲textnode本身將空文本節點(S)爲以及收藏。所以使用children將忽略文本節點。

嘗試:

var x = xml.getElementsByTagName("acrossClues")[0].children; 
for (var i = 0, l = x.length; i < l; i++) { 
    clues.push(x[i].childNodes.item(0).nodeValue); 
} 

Demo

+0

** + 1 ** [這是另一個使用HTML的演示](http://jsfiddle.net/gRLy2/) – Cilan

+0

@ManofSnow謝謝! – PSL

+0

謝謝你的回答。我還有一個問題:我怎樣才能得到答案標籤的值?我嘗試了這樣的x [i] .getElementsByTagName(「answer」)[i] .childNodes [0] .nodeValue,但它不工作。我試過其他版本。 –

0

這個作品

for (i=0;i<x.length;i++) 
{ 
    if(x[i].childNodes.item(0) != null){ 
     clues.push(x[i].childNodes.item(0).nodeValue); 
    } 

} 
相關問題