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

崩溃了。帮忙看一下这个小问题
js读取XML文档,明明有两行,为何打印行数是0   ?

js:

var   xmlDoc   =   new   ActiveXObject( "Msxml2.DOMDocument ");  
xmlDoc.async   =   false;
xmlDoc.load( "user.xml ");
nodes   =   xmlDoc.selectNodes( "//b/link ");  
document.write(nodes.length);

user.xml
<?xml   version= "1.0 "   encoding= "utf-8 "   ?>
<b>
  <link>
    <bannerImage> images/dvd.jpg </bannerImage>
    <bannerADlink> http://www.sina.com </bannerADlink>
    <bannerADtitle> 新浪网 </bannerADtitle>
  </link>
    <link>
    <bannerImage> images/gdpic.jpg </bannerImage>
    <bannerADlink> http://www.qq.com </bannerADlink>
    <bannerADtitle> 腾讯 </bannerADtitle>
  </link>
</b>



------解决方案--------------------
你的JS没错,你的XML格式没错,但是因为中文的存在,乱码了,XML解析错误,我前后对比看了好久,把中文换成英文的就没事.
建议你把XML文件以UTF-8编码保存一次再试试.

我的测试代码如下
xmlDoc.loadXML( " <?xml version=\ "1.0\ " encoding=\ "utf-8\ "?> <b> <link> <bannerImage> images/dvd.jpg </bannerImage> <bannerADlink> http://www.sina.com </bannerADlink> <bannerADtitle> fsdafds </bannerADtitle> </link> \
<link> <bannerImage> images/dvd.jpg </bannerImage> <bannerADlink> http://www.sina.com </bannerADlink> <bannerADtitle> fdsafasd </bannerADtitle> </link> </b> ");
if (xmlDoc.parseError != 0)
{
alert(xmlDoc.parseError.reason);
// 这一行是如果解析的时候出错,会提示你的,你加上看看就知道什么问题了.
}
nodes = xmlDoc.selectNodes( "//b/link ");

document.write(nodes.length);
------解决方案--------------------
嗯,
我做存儲xml的時候,
都encodeURIComponent編碼。