Cross-Browser Javascript XML Parsing

前端 未结 3 1993
梦谈多话
梦谈多话 2020-11-22 08:34

Are there any cross-browser / cross-platform ways to parse XML files in Javascript?

3条回答
  •  深忆病人
    2020-11-22 08:47

    The following will work in all major browsers, including IE 6:

    var parseXml;
    
    if (typeof window.DOMParser != "undefined") {
        parseXml = function(xmlStr) {
            return ( new window.DOMParser() ).parseFromString(xmlStr, "text/xml");
        };
    } else if (typeof window.ActiveXObject != "undefined" &&
           new window.ActiveXObject("Microsoft.XMLDOM")) {
        parseXml = function(xmlStr) {
            var xmlDoc = new window.ActiveXObject("Microsoft.XMLDOM");
            xmlDoc.async = "false";
            xmlDoc.loadXML(xmlStr);
            return xmlDoc;
        };
    } else {
        throw new Error("No XML parser found");
    }
    

    Example usage:

    var xml = parseXml("Stuff");
    alert(xml.documentElement.nodeName);
    

    Live demo:

    var parseXml;
    
    if (typeof window.DOMParser != "undefined") {
        parseXml = function(xmlStr) {
            return ( new window.DOMParser() ).parseFromString(xmlStr, "text/xml");
        };
    } else if (typeof window.ActiveXObject != "undefined" &&
           new window.ActiveXObject("Microsoft.XMLDOM")) {
        parseXml = function(xmlStr) {
            var xmlDoc = new window.ActiveXObject("Microsoft.XMLDOM");
            xmlDoc.async = "false";
            xmlDoc.loadXML(xmlStr);
            return xmlDoc;
        };
    } else {
        throw new Error("No XML parser found");
    }
    
    var xml = parseXml("Stuff");
    document.body.innerHTML = "Root element: " + xml.documentElement.nodeName;

提交回复
热议问题