Nice programing

크로스 브라우저 자바 스크립트 XML 파싱

nicepro 2020. 11. 28. 12:26
반응형

크로스 브라우저 자바 스크립트 XML 파싱


Javascript에서 XML 파일을 구문 분석하는 브라우저 간 / 플랫폼 간 방법이 있습니까?


다음은 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");
}

사용 예 :

var xml = parseXml("<foo>Stuff</foo>");
alert(xml.documentElement.nodeName);

라이브 데모 :

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("<foo>Stuff</foo>");
document.body.innerHTML = "Root element: " + xml.documentElement.nodeName;


jQuery.parseXML 사용을 고려하십시오 .

이전 JQuery의 코드 (2.x 이전)는 허용 된 답변에서 제안 된 것과 본질적으로 동일하며 http://code.jquery.com/jquery-1.9.1.js , 아래 부분 버전 에서 찾을 수 있습니다 .

// Cross-browser xml parsing
parseXML: function( data ) {
    ...
    try {
        if ( window.DOMParser ) { // Standard
            tmp = new DOMParser();
            xml = tmp.parseFromString( data , "text/xml" );
        } else { // IE
            xml = new ActiveXObject( "Microsoft.XMLDOM" );
            xml.async = "false";
            xml.loadXML( data );
        }
    } catch( e ) {
        xml = undefined;
    }
    ...
}

JQuery 2.x 시작 코드가 여전히 필요한 경우 ActiveX 분기를 건너 뛰도록 변경되었습니다. 이전 버전의 JQuery 또는 인라인 ActiveX 구문 분석을 사용하십시오. http://code.jquery.com/jquery-2.0.0.js의 부분 코드 :

// Cross-browser xml parsing
parseXML: function( data ) {
    var xml, tmp;
    .....
    // Support: IE9
    try {
        tmp = new DOMParser();
        xml = tmp.parseFromString( data , "text/xml" );
    } catch ( e ) {
        xml = undefined;
    }
    .....
},

If you need to parse large XML documents that you may not be able to completely hold in memory, consider using a SAX style parser like this one: https://github.com/isaacs/sax-js/

참고URL : https://stackoverflow.com/questions/7949752/cross-browser-javascript-xml-parsing

반응형