XP

XPath 测试器

用 XPath 1.0 查询 XML,支持命名空间和完整类型结果

JSON 与数据
🔒 100% 本地运行 — 你的数据不会离开当前页面
由 Evan 维护•最近更新:2026年9月30日

本地处理 XML 1.0,支持命名空间、注释、CDATA 与处理指令。不支持 DTD 和实体声明。 输入仅保留在当前页面,不存储草稿。上限:输入 1 MiB、输出 4 MiB、含属性 20,000 个 XML 节点、64 层元素。文本框会规范化粘贴换行;保留 CSV 原始回车请上传 UTF-8 文件。

XML 1.0

仅解析 XML。默认命名空间也需要显式查询前缀。支持字符串、数字、布尔值与最多 2000 个节点;复制/下载包含完整的类型结果 JSON 和完整元素 XML。XPath 非有限数值以 number 结果中的字符串表示。

页面阅读模式

完整说明还包括常见问题处理、操作示例、代码片段、FAQ 和相关工具,便于核对结果或排查问题。

工具说明

XPath 测试器使用浏览器原生 XPath 1.0 查询 XML 1.0。每行设置一个 前缀=URI 来查询命名空间元素;原文使用默认命名空间时,查询仍需要前缀。节点集、字符串、数字和布尔值分别显示类型。复制与下载包含完整结果 JSON:元素保留完整 XML 及子树所需命名空间,属性与文本值不修剪空白。合法查询的零匹配属于空结果。XPath 非有限数值在 number 结果中表示为字符串。表达式最多 2048 字符,命名空间设置最多 32 行和 8192 字符,最多匹配 2000 个节点。不支持 HTML 解析、DTD、XPath 2/3 或 namespace 轴。输入最多 1 MiB、输出最多 4 MiB,XML 最多 20,000 个节点(含属性)和 64 层元素。上传只接受严格解码的 UTF-8;粘贴文本遵循浏览器文本框的换行规则。处理在本地完成,不保存输入草稿。

场景配方

01

查询带默认命名空间的 Feed

目标:区分命名空间不匹配与合法空结果。

  1. 粘贴 XML Feed 并检查 xmlns 的值。
  2. 把 p 绑定到该 URI,分别运行 count(//p:item)、//p:item/@id 与 string(//p:item[1])。
  3. 复制完整结果 JSON,核对值与类型。零节点属于有效结果;无效表达式会单独报错。

结果:得到包含明确命名空间设置的可复现 XPath 1.0 查询。

失败门诊(高频踩坑)

表达式返回零节点

原因:元素可能带命名空间,或路径确实没有选中记录。

修复:检查元素展开名称并绑定前缀;区分合法的零匹配与语法错误。

浏览器里的结果看起来不完整

原因:可见预览最多展示 40,000 字符。

修复:使用“复制完整结果 JSON”或下载 JSON;在节点与输出限制内,这两者包含全部匹配。

生产可用片段

原文使用默认命名空间时也要绑定查询前缀

xml

<catalog xmlns="urn:catalog"><item id="001">  A  </item></catalog>

命名空间:p=urn:catalog
XPath:count(//p:item)
结果 JSON:{"type":"number","value":1}

常见问题

为什么 //item 匹配不到默认命名空间?

XPath 1.0 中无前缀的元素测试只匹配无命名空间元素。若文档 URI 为 urn:catalog,设置 p=urn:catalog 后使用 //p:item;查询前缀不必与原文前缀相同。

可以执行 count()、string() 与 boolean() 吗?

可以,分别返回数字、字符串与布尔结果。JSON 不支持非有限数字字面量,因此 NaN 与无穷值保留为 number 类型结果中的字符串。

复制只包含预览内容吗?

不是。即使屏幕预览截断,复制与下载也包含完整类型结果 JSON。元素值包含完整 XML,属性与文本值保留空白。

可以查询 HTML 或使用 XPath 2.0 吗?

不可以。本工具严格解析 XML 1.0,并使用浏览器 XPath 1.0 引擎。这类需求应选择对应 HTML 解析器或其他 XPath 引擎。

继续浏览