当我尝试遍历gallery节点的子节点时,它不返回nodevalue,当它应该读取'Joe Bloggs'时,并且当它应该读取'property'时节点名称的'#text'。任何人都可以看到我的javascript或XML可能出错。
<gallery_index>
<gallery id="0">
<property id="name">Joe Bloggs</property>
<property id="description"><p>testtest</p></property>
<property id="thumbnail_path">/images/thumb.jpg</property>
<property id="weblink">http://www.cnn.com</property>
<property id="client"></property>
<assets/>
</gallery>
</gallery_index>
的Javascript。
// code for IE
if (window.ActiveXObject){
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
}
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation.createDocument)
{
xmlDoc=document.implementation.createDocument("","",null);
}
else
{
alert('Your browser cannot handle this script');
}
xmlDoc.async=false;
xmlDoc.load("../../../../../../../../xml/gallery_index.xml");
galleryIndexNode = xmlDoc.documentElement;
galleryNode = galleryIndexNode.firstChild;
alert(galleryNode.firstChild.nodeName);
编辑:
好的,改了以下的javascript。如果我这样做,将显示nodeName和nodeValue。
alert(galleryNode.childNodes[1].nodeName);
。 。 。 。
alert(galleryNode.childNodes[3].nodeName);
我的XML格式错误吗?它显示在FF中。我该怎么做才能解决这个问题?
答案 0 :(得分:1)
&lt; gallery&gt;的第一个孩子在您的示例中是一个文本节点,其中没有任何内容(或换行符和一些选项卡,具体取决于您的解析器是否保留了空格)。包含Joe Bloggs的元素是&lt; gallery&gt;的第二个子元素。
事实上,从它的外观来看,脚本中的 galleryNode 指向&lt; gallery_index&gt;的第一个文本子项,而不是&lt; gallery&gt;元件。