gpt4 book ai didi

javascript - 无法对创建的文档执行 Javascript XPath 查询

转载 作者:行者123 更新时间:2023-11-28 10:09:31 24 4
gpt4 key购买 nike

问题

我正在使用 JavaScript 创建一个文档,并且我想对此文档执行 XPath 查询。

  • 我在 safari/chrome 中尝试过此操作
  • 我已经阅读了 createDocument/xpath 搜索,看起来这段代码确实应该可以工作
  • 目前看来这可能是一个 webkit 错误

我的要求:

  • 我可以使用innerHTML()来设置文档
  • 我可以使用标记名执行 xpath 搜索

代码:

如果您将以下内容复制/粘贴到 webkit 检查器中,您应该能够重现。

function search(query, root) {  
var result = null;
result = document.evaluate(query, root, null, 7,null);

var nodes = [];
var node_count = result.snapshotLength;

for(var i = 0; i < node_count; i++) {
nodes.push(result.snapshotItem(i));
}

return nodes;
}

x = document.implementation.createDocument('http://www.w3.org/1999/xhtml', 'html', 'HTML');

body = x.createElement('body');
body.innerHTML = "<span class='mything'><a></a></span>";

xdoc = x.documentElement; //html tag
xdoc.appendChild(body);

console.log(search(".", xdoc)); // --> [<html>​…​</html>​]
console.log(search("/*", xdoc)); // --> [<html>​…​</html>​]
console.log(search("/html", xdoc)); // --> []

最佳猜测

所以我绝对可以使用 XPath 进行搜索,但无法使用标记名进行搜索。关于命名空间,我是否遗漏了一些愚蠢的东西?

最佳答案

你尝试过吗:

console.log(search("//html", xdoc));

我对 Safari 不太熟悉,但问题可能是 Safari 在 HTML 之上添加了另一个节点或其他东西。如果是这种情况,前两个查询可能会向您显示该节点及其子节点,这将使它们看起来工作正常,而第三个查询将失败,因为不会有 root=>HTML 节点.

只是一个想法。

关于javascript - 无法对创建的文档执行 Javascript XPath 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7656257/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com