14

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

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

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

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

4

2 回答 2

6

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

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”,因为它在这里被认为是对系统上存在的任何 xml 解析器的更通用调用,听起来“Msxml2.DOMDocument.6.0”如果该确切版本将失败不存在。(我们必须在我这里支持所有 IE 版本回到 6.0!)

这就像它一直做的那样工作。我遇到的唯一问题是我用来检测 IE 与其他浏览器的旧开关if (typeof ActiveXObject !== "undefined")失败了,因为我猜他们正试图阻止它的使用!

感谢你的帮助。

于 2013-10-11T15:05:21.327 回答
0

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

事实证明,我可以使用以下元标记使其表现得像在 IE10 中一样:

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

没有和有上述元数据的结果: IE11默认模式 IE10 模式下的 IE11

以下是 XMLDocument 的成员(供参考): 在此处输入图像描述

于 2014-01-14T13:30:14.720 回答