IE11 中的 XPath 定位轴
XPath location axis in IE11
是否是 IE11 不喜欢 XPath 查询中的位置轴?我正在尝试 运行 在该浏览器中执行以下命令:
DOMDocument.selectNodes('//library/ancestor::stores')
IE11 给我的错误是
Expected token 'eof' found ':'.
//library/ancestor-->:<--:stores
Chrome等浏览器都没有问题,但是IE11哭得像个婴儿?我一直在四处搜索,除了模糊暗示浏览器可能使用旧版本的 MSXML 之外,找不到真正的原因。有什么我可以做的让它在那个浏览器中工作吗?如果没有,是否有可以使用的替代轴?
编辑:我想指出一件事——这个问题不一定与 xpath 查询是否有效有关。 IE11 并没有抱怨查询的有效性,而是抱怨“::”位置轴。
thnx,
克里斯托夫
此问题与您在 IE 中使用的 MSXML 版本有关。如果您使用 MSXML 3.0,它将使用旧的 XSLPattern 语言作为查询语言,这将导致问题。
作为解决方法,您可以使用默认使用 XPath 语言的 MSXML 6.0。 IE 11 中的工作示例如下所示。我的books.xml和this example一样.:
<!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 Property。它也适用于 IE 11:
var xmlDoc = new ActiveXObject("MSXML.DOMDocument");
xmlDoc.setProperty("SelectionLanguage", "XPath");
是否是 IE11 不喜欢 XPath 查询中的位置轴?我正在尝试 运行 在该浏览器中执行以下命令:
DOMDocument.selectNodes('//library/ancestor::stores')
IE11 给我的错误是
Expected token 'eof' found ':'.
//library/ancestor-->:<--:stores
Chrome等浏览器都没有问题,但是IE11哭得像个婴儿?我一直在四处搜索,除了模糊暗示浏览器可能使用旧版本的 MSXML 之外,找不到真正的原因。有什么我可以做的让它在那个浏览器中工作吗?如果没有,是否有可以使用的替代轴?
编辑:我想指出一件事——这个问题不一定与 xpath 查询是否有效有关。 IE11 并没有抱怨查询的有效性,而是抱怨“::”位置轴。
thnx,
克里斯托夫
此问题与您在 IE 中使用的 MSXML 版本有关。如果您使用 MSXML 3.0,它将使用旧的 XSLPattern 语言作为查询语言,这将导致问题。
作为解决方法,您可以使用默认使用 XPath 语言的 MSXML 6.0。 IE 11 中的工作示例如下所示。我的books.xml和this example一样.:
<!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 Property。它也适用于 IE 11:
var xmlDoc = new ActiveXObject("MSXML.DOMDocument");
xmlDoc.setProperty("SelectionLanguage", "XPath");