日期:2014-05-16  浏览次数:20421 次

读取xml节点的奇怪问题
代码如下

  function   MainSay(XmlString)
{
var   xmlDoc=new   ActiveXObject( "MSXML2.DOMDocument.3.0 ");
xmlDoc.async   =   false;
while(   xmlDoc.readyState   !=   4)   {};
xmlDoc.loadXML(XmlString);
var   RoomNodes   =   xmlDoc.selectSingleNode( "/Room ").childNodes;
var   SayNodes,_SayString;
                for(var   i=0;i <RoomNodes.length;i++)
                {
                        SayNodes=RoomNodes[i];
                      这句出问题     _SayString=SayNodes.selectSingleNode( "//SayString ").text;
                        parent.PublicSay.PublicSayDiv.innerHTML+=SayString+ " <br   /> ";
                  }
}

xml   结构是
<Room>
    <Say>
        <ttt> </ttt>
        <SayString> 你好 </SayString>
    </Say>
    <Say>
        <ttt> </ttt>
        <SayString> 大家好 </SayString>
    </Say>
    ....
</Room>

程序经常重复输出第一个SayString子节点内容,如果用RoomNodes[i].text直接输出全部子节点,又是正常的,错误出现在selectSingleNode那句上,真是奇怪,不知道为什么,请大家帮忙

------解决方案--------------------
sorry,我的第二个回答有问题。
也可以这样

SayNodes=RoomNodes[i];
_SayString=SayNodes.childNodes[1].text;

------解决方案--------------------
当然你也可以SayNodes.getElementByTagName( "SayString ")[0]开取得