javascript如何加载xml文件,兼容ie及ff,序列化与反序列化

+展开
-JavaScript
var doc;
if(window.ActiveXObject)
{
  doc=new ActiveXObject("microsoft.xmldom");
/*IE的这个对象可以使用doc.load('文件路径')加载文件,也可以用doc.loadXML("xml字符串")生成xml对象
加载文件时,可以使用async属性来指定异步或者同步,默认为异步async=true。
如果为异步时,可以使用onreadystatechange处理函数来判断加载状况。如下
doc=new ActiveXObject("Microsoft.XMLDOM");
doc.onreadystatechange=function(){if(doc.readyState==4)handler(doc);}
doc.load(url);
*/

}
else if(document.implementation&&document.implementation.createDocument)
{
  doc=document.implementation.createDocument("","",null);
/*
对于w3c类,没有loadXML方法,只能使用DOMParser对象来加载xml字符串
也有async属性,但没有onreadystatechange,可以使用onload,参考如下
doc=document.implementation.createDocument("","",null);
doc.onload=function(){handler(xmldoc,url);}
doc.load(url);
===============================
parser=new DOMParser();
Parser.parseFromString("<root><child/></root>,"text/xml");
//当然可以扩展document的prototype,使它具有loadXML方法,如下
Document.prototype.loadXML = function (sXml) {
  
      var oParser = new DOMParser();
      var oXmlDom = oParser.parseFromString(sXml, "text/xml");
    
      //删除原文档内容
      while (this.firstChild) {
        this.removeChild(this.firstChild);
      }
      //导入新的文档内容
      for (var i=0; i < oXmlDom.childNodes.length; i++) {
        var oNewNode = this.importNode(oXmlDom.childNodes[i], true);
        this.appendChild(oNewNode);
      }
    
    };

*/

}
alert(doc.async)

/*
序列化与反序列化
//ie
alert(XMLDOM.xml)
//FF
var xmls=new XMLSerializer();
alert(xmls.serializeToString(XMLDOM))
*/

加支付宝好友偷能量挖...


原创文章,转载请注明出处:javascript如何加载xml文件,兼容ie及ff,序列化与反序列化

评论(1)Web开发网
阅读(302)喜欢(0)JavaScript/Ajax开发技巧