internet-explorer - IE11 中的 XPath 位置轴
问题描述
IE11 是否不喜欢 XPath 查询中的位置轴?我正在尝试在该浏览器中运行以下命令:
DOMDocument.selectNodes('//library/ancestor::stores')
IE11给我的错误是
Expected token 'eof' found ':'.
//library/ancestor-->:<--:stores
Chrome等浏览器没问题,IE11哭得像个婴儿?我一直在四处寻找,除了模糊地暗示浏览器可能正在使用旧版本的 MSXML 之外,真的找不到发生这种情况的原因。我可以做些什么来让它在那个浏览器中工作吗?如果没有,是否有可以使用的替代轴?
编辑:我想指出一件事——问题不一定与 xpath 查询是否有效有关。IE11 不是在抱怨查询的有效性,而是在抱怨“::”位置轴。
谢谢,
克里斯托夫
解决方案
该问题与您在 IE 中使用的 MSXML 版本有关。如果您使用 MSXML 3.0,它将使用旧的 XSLPattern 语言作为会导致问题的查询语言。
作为一种解决方法,您可以使用默认使用 XPath 语言的 MSXML 6.0。IE 11 中的工作示例如下所示。我的books.xml与此示例相同。:
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var txt = "";
var xmlDoc = new ActiveXObject("MSXML2.DOMDocument.6.0"); //use MSXML 6.0
xmlDoc.async = false;
xmlDoc.load("books.xml");
var nodes = xmlDoc.selectNodes('/bookstore/book/child::title');
for (i = 0; i < nodes.length; i++) {
txt += nodes[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("demo").innerHTML = txt;
</script>
</body>
</html>
如果您使用的是 MSXML 3.0,则可以使用如下所示的SelectionLanguage 属性。它也适用于 IE 11:
var xmlDoc = new ActiveXObject("MSXML.DOMDocument");
xmlDoc.setProperty("SelectionLanguage", "XPath");
推荐阅读
- python - 处理ValueError:Series的真值不明确| 寻找熊猫指数的多种条件
- mysql - mysql将2行分组为1行之间只有一个不同的值
- r - R编程,如何检查数字是否包含最后一位1?
- memory - 如何检查进程的(绝对)内存使用情况?
- c++ - 如何释放由链表实现的队列类的成员函数动态分配的内存?
- c++ - C++20 的 'requires' 关键字会减慢你的程序吗?
- asp.net - Web 开发路线图
- c - 如何使用索引和列表作为参数从 C 中的链表中删除项目?
- swift - 如何从设备获取快速 12 小时和 24 小时的时间模式
- android - 从在 android studio 上生成 PDF 的 URL 下载 PDF