无法遍历XML文档

时间:2009-10-30 09:52:08

标签: javascript xml

当我尝试遍历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中。我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:1)

&lt; gallery&gt;的第一个孩子在您的示例中是一个文本节点,其中没有任何内容(或换行符和一些选项卡,具体取决于您的解析器是否保留了空格)。包含Joe Bloggs的元素是&lt; gallery&gt;的第二个子元素。

事实上,从它的外观来看,脚本中的 galleryNode 指向&lt; gallery_index&gt;的第一个文本子项,而不是&lt; gallery&gt;元件。