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

pix*_*att 13 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的对象.

pix*_*att 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 }
Run Code Online (Sandbox Code Playgroud)

我已经使用了"Microsoft.XMLDOM",因为它在这里被称为对系统中存在的xml解析器的更通用的调用,因为它听起来像"Msxml2.DOMDocument.6.0"将失败,如果确切的版本不在场.(我们必须在我的地方支持所有IE版本回到6.0!)

这只是一如既往地工作.我遇到的唯一问题是我用来检测IE与其他浏览器的旧开关if (typeof ActiveXObject !== "undefined")失败了,因为我猜他们试图阻止它的使用!

感谢你的帮助.

  • 所有支持的Microsoft操作系统都可以使用`Msxml2.DOMDocument.6.0`,甚至是带有最新Service Pack的Windows XP.`Microsoft.XMLDOM`更通用但是现在默认为MSXML 3,带有`selectNodes`和`selectSingleNode`的版本不支持XPath 1.0作为查询语言,而是支持专有语言.当然,如果你一直使用它,你可以继续使用它,但有XPath 1.0表达式以这种方式抛出错误. (2认同)