JS读取xml数据,跨IE、Firefox

看过很多资料,做过很多测试,ie上实现读取xml很容易,firefox就麻烦了,这是个什么原因?

var xmlDoc;
// code for IE
if  (window.ActiveXObject)

    xmlDoc 
= new ActiveXObject("Microsoft.XMLDOM");
}
 
//  code for Mozilla, Firefox, Opera, etc. 
else   if  (document.implementation  &&  document.implementation.createDocument) 
// or else if(window.XMLHttpRequest)

    xmlDoc
=document.implementation.createDocument("","",null); 
}
 
xmlDoc.async
= false
xmlDoc.load(
" productClass.xml " );
    

上面是读取xml代码
有一点: IE里可以把load()方法改成loadXML(),Firefox只能用load()
看看结果:
alert(xmlDoc);
IE:给我们老老实实的弹出个 [object]
Firefox: 来个 [object XMLDocument]
显然,获取到的类型不同

再来
alert(xmlDoc.xml);
IE:弹出了xml文件所有信息
Firefox: undefined
所以所谓的 xmlDoc.loadXML(xmlDoc.xml.replace(/&lt;/g,"<").replace(/&gt;/g,">"));不能用了

已经获取了对象了,只是对象类型不同,现在就是如果处理这个对象,怎么从这个对象取数据
IE下一般使用 selectNodes selectSingleNode 这些方法,而Firefox并没有这些方法,只能用 xmlDoc.documentElementxmlDoc.childNodes[0]等死方法获取数据,然而从根节点获取子节点时就出现问题了,IE里获取子节点数为12,Firefox里却为25,用 nodeName属性查看下,Firefox里多了很多莫名奇妙的元素(可能是我没搞清楚其中的缘由),不过如果你判断下 nodeName的值还是可以获取到信息的。知道这点就好办了,现在问题是就是如果写个简单的通用方法获取xml信息。

有待探讨。。。

你可能感兴趣的:(firefox)