XML4跨浏览器兼容

//跨浏览器返回XMLDOM对象
function getXMLDOM(xmlStr){
    var xmlDom=null;
    if(typeof window.DOMParser !='undefined'){
        xmlDom=(new DOMParser).parseFromString(xmlStr,'text/xml');
        var errors=xmlDom.getElementsByTagName('parsererror');
        if(errors.length>0){
            throw new Error('错误信息:'+errors[0].textContent);
        }
    }else if(typeof window.ActiveXObject){
        var version=[
            'MSXML2.DOMDocument6.0',
            'MSXML2.DOMDocument3.0',
            'MSXML2.DOMDocument',
        ];
        for(var i=0;i<version.length;i++){
            try{
                var xmlDom=new ActiveXObject(version[i]);
            }catch(e){
                //跳过
            }
        }
        xmlDom.loadXML(xmlStr);
        if(xmlDom.parseError!=0){
            throw new Error('错误信息:'+xmlDom.parseError.reason);
        };
        return xmlDom;
    }else{
        throw new Error("您的系统或浏览器不支持XML DOM对象!");
    };
    



    return xmlDom;
}
//序列化XML
function serializerXML(xmlDom){
    var xml='';
    if(typeof window.XMLSerializer!='undefined'){
        xml=(new XMLSerializer()).serializeToString(xmlDom);
    }else if(typeof xmlDom.xml!='undefined'){
        xml=xmlDom.xml;
    }
    return xml;
}
var xmlStr='<root><user>Leee</user></root>';
var xmlDom=getXMLDOM(xmlStr);
// alert(xmlDom.xml); //只有IE支持此序列化
alert(serializerXML(xmlDom));



//PS: 为了跨域所有浏览器兼容,我们放弃了从外部加载XML文件,而使用字符串XML加载和序列化
posted @ 2017-09-20 16:04  耿鑫  阅读(89)  评论(0编辑  收藏  举报