我有一个看起来像这样的xml
<?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标签的线索(所以,穿过线索的线索儿童)。 到现在为止,我有这个:
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 :(得分:1)
尝试使用children
而不是childNodes
,因为chidlNodes也将包含文本节点,如果您的xml已格式化,那么实际元素节点之间的所有连续空白区域都将变为textnode本身{{1在集合中也会有空文本节点。因此,使用children将忽略文本节点。
尝试:
xml.getElementsByTagName("acrossClues")[0].childNodes
<强> Demo 强>
答案 1 :(得分:0)
这是有效的
for (i=0;i<x.length;i++)
{
if(x[i].childNodes.item(0) != null){
clues.push(x[i].childNodes.item(0).nodeValue);
}
}