您的位置:首页 > Web前端 > JavaScript

javascript读取xml的解法,兼容多浏览器

2009-07-17 14:37 495 查看
try{

xmlDoc=new ActiveXObject("Microsoft.XMLDOM");

}

catch(e){

try{

xmlDoc=document.implementation.createDocument("","",null);

}

catch(e) {alert(e.message)}

}

try{

xmlDoc.async=false;

xmlDoc.load("example.xml");

document.write("xmlDoc is loaded");

}

catch(e){

alert(e.message)

}

在网上能找到的用JS读取XML文件的脚本大多都是类似上面这个样子的。可气的是代码里一般都会有注释说可以兼容firefox、opera、safari、IE,其实经过我测试,这种代码根本不支持safari,同内核的chrome当然也不支持。

在safari里会报错:
value undefined (result of expression xmlDoc.load) is not object
。在chrome里则报错:
Uncaught TypeError: Object #<a Document> has no method 'load'


很奇怪在网上搜索报错内容几乎没有找到相关条目,即便是有那么一两条,也只是提出了问题没有给出解决办法。其实用XMLHttpRequest读取XML来避免使用
xmlDoc.load()
方法就可以解决了。我不知道这是不是唯一的解决办法,总之我根据这个写了一段——这回在IE、opera、firexfox、safari/chrome里用JS都已经可以正常读取XML数据了——演示地址在这里。用到的JS脚本可以查看源代码来查看。

另外,我尝试着把读取到的数据用XSLT文件来格式化,然后显示出来。但是,firefox浏览器又遇到了我之前提到过的把
<![CDATA[ ]]>
标签内容解释为HTML的障碍。而且,这回用上次提到的JS解决办法貌似不行,只能用
<xsl:copy-of select="node()"/>
来弥补。

转贴网络博客

用于我的案子的code:jsreadxml
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐