XPath 测试器

在 XML 或 HTML 上测试 XPath 表达式,查看匹配到的节点、值和路径。

输入类型
XML / HTML 输入
结果
输入 XML 或 HTML,再输入 XPath 表达式即可测试。

你的 XML、HTML 和 XPath 会在浏览器本地测试,不会上传到 BroBroGo。

常见问题

可以在 HTML 上测试 XPath 吗?

可以。XML 模式保留 XML 的命名空间规则;HTML 模式更宽容,像 //a 这样的简单路径可以直接匹配普通标签。

XML 命名空间怎么处理?

XML 里声明过的命名空间前缀可以直接写进 XPath,比如 //x:item。默认命名空间也会跟随文档声明,所以 //item 能按文档里的默认命名空间匹配。

为什么查询会超时?

很大的文档或过宽的表达式可能需要很久才能算完。工具会在 2 秒后停止本次查询,让页面保持可用;可以缩窄路径或换一段更小的样本。

XPath 测试器功能与工作原理

XPath 测试器支持在本地浏览器中直接测试 XPath 表达式,用于查询和提取 XML 或 HTML 内容中的特定节点。用户只需提供待测试的文档内容并输入 XPath 表达式,工具即可实时解析并展示所有匹配到的节点信息。

在解析过程中,工具会提取并呈现以下详细数据:

  • 匹配总数:直观展示匹配到的节点总数量。
  • 节点详情:针对每一个匹配到的节点,详细列出其节点类型、节点名称、节点路径以及节点值的预览。
  • 单项复制:每个匹配结果旁均提供复制按钮,便于用户快速提取单个节点的具体值。

该工具完全在本地运行,用户的 XML、HTML 和 XPath 会在浏览器本地测试,不会上传到 BroBroGo。


输入限制与运行规则

为了保证浏览器的响应速度与系统稳定性,工具在处理输入和执行查询时遵循以下具体规则与限制:

  • 输入长度限制:XML / HTML 输入的最大长度为 500,000 个字符;XPath 表达式的最大长度为 4,000 个字符。如果超出限制,系统会分别提示“这段文档太大,暂时无法在这里测试。请换一段更小的样本。”或“这个 XPath 表达式太长,暂时无法测试。”。
  • 执行超时保护:工具在评估 XPath 表达式时,若执行时间超过 2 秒会自动停止,以防止浏览器卡死。超时后会显示“这个 XPath 运行太久了。请缩窄表达式,或换一段更小的样本。”。
  • 结果截断:当匹配到的结果超过 200 个时,工具会显示“只显示前 {max}。”,并且仅渲染前 200 个匹配项。
  • 异常处理:若文档格式错误,会提示“无法解析这段文档。”;若表达式语法错误,提示“这个 XPath 表达式不合法。”;若无法执行计算,则提示“无法执行这个 XPath。”;若未找到匹配项,则显示“没有结果。”。

XML 模式与 HTML 模式的区别

在测试 XPath 时,用户可以根据输入文档的类型选择“XML”或“HTML”模式,这两种模式在解析和匹配规则上存在明确差异:

模式 命名空间处理 容错性与匹配表现
XML 模式 严格遵循 XML 命名空间规则。 要求文档结构完全符合 XML 规范,否则无法解析。
HTML 模式 不严格限制命名空间。 表现更为宽容,允许使用类似 //a 这样的简单路径直接匹配 HTML 中的普通标签。

需要注意的是,此工具仅对输入的静态文本进行解析与 XPath 评估,并不代表在线网页的实时结构、渲染后的 DOM 或网络请求状态。


XML 命名空间在 XPath 中的应用

在 XML 模式下,命名空间的处理直接影响定位的准确性:

  1. 声明过的前缀:XML 文档中已经声明过的命名空间前缀可以直接在 XPath 表达式中使用,例如 //x:item
  2. 默认命名空间:对于 XML 中的默认命名空间,表达式 //item 也会严格跟随文档声明进行匹配。

为了避免因命名空间未对应而导致查询无结果,编写表达式时需确保前缀与文档中的声明保持一致。


编写高效 XPath 表达式的策略

由于工具设有 2 秒的执行时间限制,编写高效的 XPath 表达式对于处理大文本至关重要。以下是避免执行超时的几点策略:

  • 避免滥用深层缩写路径:频繁使用 // 会导致引擎对整个文档树进行深度遍历。在结构已知的情况下,尽量使用绝对路径(如 /root/parent/child)或限制遍历范围。
  • 及早过滤节点:利用谓词(Predicate)在路径前段过滤掉不必要的节点分支,减少后续计算的节点基数。
  • 简化属性筛选:避免在超大文档中对非索引属性进行复杂的字符串函数模糊匹配。

常见问题

可以在 HTML 上测试 XPath 吗?

可以。XML 模式保留 XML 的命名空间规则;HTML 模式更宽容,像 //a 这样的简单路径可以直接匹配普通标签。

XML 命名空间怎么处理?

XML 里声明过的命名空间前缀可以直接写进 XPath,比如 //x:item。默认命名空间也会跟随文档声明,所以 //item 能按文档里的默认命名空间匹配。

为什么查询会超时?

很大的文档或过宽的表达式可能需要很久才能算完。工具会在 2 秒后停止本次查询,让页面保持可用;可以缩窄路径或换一段更小的样本。