xml - 使用 "and"的 XPath 表达式在 Microsoft Edge 中不起作用?

标签 xml xpath microsoft-edge

我正在开发一个应用程序,该应用程序使用 XPath 表达式从 XML 中选择节点。我们注意到,在 Microsoft Edge 预览版中进行测试时,这似乎对我们来说是失败的。我已将我们的代码缩减为一个演示问题的简短片段:

var xml = "<xml id='relationships'><Relationships><f id='some_id' ><f id='some_other_id' /></f></Relationships></xml>";
var doc = (new DOMParser).parseFromString(xml, "text/xml");
var nodes = doc.evaluate("//f[@id='some_id' and f]", doc, doc.createNSResolver(doc.documentElement), XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
console.log(nodes.snapshotLength);

在 Chrome 中,这将注销 1 并且 nodes.snapshotItem 将包含正确的节点,但在 Edge 中,它将注销 0 并且不返回任何节点。

如果我单独运行此条件的任何一半,"//f[@id='some_id']""//f[f]",它跨浏览器一致工作,Edge 返回正确的节点。仅当这两个条件(对于所讨论的节点都为真)与 组合时,它才会失败。我无论如何都不是 XPath 专家,所以谁能告诉我我是否在这段代码中做了任何非标准的事情,或者这看起来像是 Edge 预览版的 XPath 实现的问题?

最佳答案

更新:此问题已在 2015 年 11 月的 Windows/Edge 更新中得到解决

这似乎是 Microsoft Edge 中当前实现的错误。但是,我确实注意到,如果您翻转条件,则会检索到正确的元素:

//f[f and @id='some_id']

目前,我希望这是一个可以接受的替代方案。我正在为我们的团队打开一个错误以供我们审查。感谢您帮助我们改进 Microsoft Edge :)

关于xml - 使用 "and"的 XPath 表达式在 Microsoft Edge 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30787569/

相关文章:

php - 加密解密文件 : SVG or XML with PHP

javascript - XPath 表达式异常

java - XPathExpression Evaluate 在 java 中返回一个空 NodeList

datatables - 输入类型搜索清除按钮 Microsoft Edge 无法与数据表正常工作

excel - 是否可以在 VBA 中创建和使用 Microsoft Edge 变量/对象?

javascript - 录音机脚本可在Edge浏览器以外的大多数浏览器上使用

c# - 从 XElement 中删除属性

c# - 构建一个 "scriptable"应用程序

XPath - 基于多个子选择选择父节点

java - nbactions.xml 是做什么用的?