【问题标题】:Xpath in Safari Web Inspector not workingSafari Web Inspector 中的 Xpath 不起作用
【发布时间】:2025-12-22 09:15:06
【问题描述】:

我正在尝试在 Safari Web 检查器中使用 xpath

我正在使用这个本地 XML:

<searchable_index>
    <item>John</item>
    <item>Paul</item>
    <item>George</item>
    <item>Ringo</item>
</searchable_index>

我将其保存为本地文件,然后打开 Chrome 并执行以下操作:

$x('//item')

它可以正常工作,返回这个:

但是当我尝试在 Safari 中做同样的事情时,它返回一个空数组

任何线索为什么会发生这种情况?它把我们逼疯了

我在优胜美地使用 Safari 8.0.3 (10600.3.18)

提前致谢。

【问题讨论】:

  • 我无法重现此内容。您确定打开的是同一个 XML 文档吗?
  • 是的,我们用两台不同的计算机测试了两个人。我们将文件保存为 *.xml,并使用浏览器打开
  • 确实很奇怪。与 Safari 7.1.2 和 Mavericks 一起工作正常。您是否安装了最新的 WebKit?
  • 我想是的,我的用户代理版本是:User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/600.3.18 (KHTML, like Gecko) Version/8.0.3 Safari/600.3.18

标签: xml xpath safari safari-web-inspector


【解决方案1】:

由于某种原因,如果选择 Safari 8 作为 WebKit 中的用户代理,并且输入文件具有 *.xml 扩展名,那么在控制台中键入的 XPath 表达式将搜索源文档,但是在它上面生成的 HTML,说

此 XML 文件似乎没有任何关联的样式信息。文档树如下所示。

并且该 HTML 文档中没有 item 元素。从理论上讲,您可以将视图从“DOM 树”更改为“源代码”,但如果用户代理是 Safari 8,这将不起作用。此外,对于允许切换到源代码的用户代理,路径表达式仍然不不行。

但是,将文件扩展名更改为 *.html 将起作用。然后,再试一次,Xpath 表达式将找到 item 元素。

如果您无法更改文件扩展名,我认为 Safari Web Inspector 无法找到这些元素。然后,您必须依赖另一个工具来根据 XML 评估 XPath 表达式,无论您的编程语言或框架中是否可用。

【讨论】:

  • 是的,你是对的,我正在做同样的事情并且它有效,但问题是我必须从 iPhone/iPad webkit 执行外部 XML 的 xpath,我可以'不要更改扩展名。
  • 并且更改用户代理并不能解决任何问题,它一直在失败
  • @Del 是的,我已经删除了那部分。请参阅我的编辑,我认为在这种情况下没有办法。
  • 好的,非常感谢 Mathias 的努力。很抱歉听到这个消息