你如何在IE11中运行xPath查询?

时间:2013-10-10 16:04:52

标签: javascript xml xpath internet-explorer-11

在我们系统的某一点上,我们使用javascript读取一大块XML,然后使用xPath查询该XML文档。

在IE 11之前,IE支持使用xmldoc.selectSingleNode(“// xpath / string”)和使用xmldoc.evaluate(“// xpath / string”)支持的非IE浏览器。这两个都返回了一个类似的对象,然后我们可以进行解释以提取所需的数据。

在IE11中,这些方法似乎都不可用。

似乎IE11对XML文档有一些支持,因为当我使用parseFromString方法使用DOMParser对象读取xml时,它返回一个IE11调试器调用XMLDocument的对象。

2 个答案:

答案 0 :(得分:6)

感谢@Martin Honnen指出在IE11中仍然支持一些ActivXObjects!

var doc;
try { 
    doc = new ActiveXObject('Microsoft.XMLDOM'); 
    doc.loadXML(stringVarWithXml); 
    var node = doc.selectSingleNode('//foo'); 
} catch (e) { // deal with case that ActiveXObject is not supported }

我使用了“Microsoft.XMLDOM”,因为它是su here它是对系统中存在的xml解析器的更通用调用,其中听起来像“Msxml2.DOMDocument.6.0 “如果不存在确切的版本,将会失败。 (我们必须在我的地方支持所有IE版本回到6.0!)

这就像它一直以来一样有效。我遇到的唯一问题是用于检测IE与其他浏览器的旧交换机if (typeof ActiveXObject !== "undefined")失败了,因为我猜他们试图阻止它的使用!

感谢大家的帮助。

答案 1 :(得分:0)

为了扩展pixelmatt的answer,我的测试的一些结果(使用IE11的Win 7 64bit)我为了让DOMParser像在IE9和IE10中一样工作(在IE11中它现在返回一个XMLDocument对象)似乎不支持xpath查询?)。

事实证明,我可以使用以下元标记使其行为与IE10一样:

<meta http-equiv="X-UA-Compatible" content="IE=10" />

没有和以上元的结果: IE11 default mode IE11 in IE10 mode

以下是XMLDocument的成员(供参考): enter image description here