jQuery XML解析IE7/IE8

Ste*_*nst 5 jquery internet-explorer-8 internet-explorer-7

我正在尝试使用此方法使用jquery访问附加到HTML文档末尾的XML内容(生成的东西):

$("SELECTION_STATE").find("CHARACTERISTIC").each( function() {
     if($(this).attr("name") == "Z_MDST" ) {
         alert($(this).find("MEMBER").attr("name"));
     }
 });
Run Code Online (Sandbox Code Playgroud)

这在Firefox和Chrome中运行良好但在IE中没有,它不会发出任何警报.

这是我试图遍历的xml

<SELECTION_STATE>

    <SELECTION type="CARTESIAN_PRODUCT">
      <CHARACTERISTICS>
        <CHARACTERISTIC name="Z_MDST">
          <SELECTIONS>
            <SELECTION type="SINGLE_MEMBER">
              <MEMBER name="00002213" type="MEMBER" text="2213"/>
            </SELECTION>
          </SELECTIONS>
        </CHARACTERISTIC>
Run Code Online (Sandbox Code Playgroud)

有什么办法可以用jquery 1.5来实现吗?

提前致谢

Dan*_*iel 6

因为您在HTML文档中.IE将无法识别XML.

console.log($("SELECTION_STATE").get());
Run Code Online (Sandbox Code Playgroud)

在IE中返回对象HTMLUnknownElement

为了使用XML,您必须通过IE XML解析器运行它.就像是.

var x = new ActiveXObject("Microsoft.XMLDOM");
x.loadXML(yourXML) 
Run Code Online (Sandbox Code Playgroud)

你显然只想这样做($.browser.msie)

附带问题:您是否使用AJAX加载XML?

更新:完整示例

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
var myXML = document.body.innerHTML;  // or wherever you are storing the XML in the DOM
xmlDoc.loadXML(myXML)

if (xmlDoc.parseError.errorCode != 0) {
   var myErr = xmlDoc.parseError;
   console.log("You have error " + myErr.reason);
} else {
   console.log(xmlDoc.xml);
}

$("SELECTION_STATE", xmlDoc).find("CHARACTERISTIC").each( function() {
     if($(this).attr("name") == "Z_MDST" ) {
         alert($(this).find("MEMBER").attr("name"));
     }
});
Run Code Online (Sandbox Code Playgroud)


Don*_*n P 6

由于您已经在使用jQuery,因此请使用parseXML函数(http://api.jquery.com/jQuery.parseXML/在1.5版中添加)

var xmlDoc = $.parseXML(data);

$(xmlDoc).find("CHARACTERISTIC").each( function() {
    if($(this).attr("name") == "Z_MDST" ) {
        alert($(this).find("MEMBER").attr("name"));
    }
});
Run Code Online (Sandbox Code Playgroud)