返回
XPath 查询测试
格式化
正在载入
正在加载工具
工具代码会在打开时按需载入,请稍候。
本工具的全部运算都发生在你的浏览器中,输入内容不会发送到任何服务器。
关于这个工具
在浏览器本地选择 XML 节点、属性,或计算 count()、sum()、string() 和 boolean()。工具支持常用 XPath 1.0 语法及函数子集,使用 FontoXPath 的 XPath 3.1 求值语义,不宣称完整兼容 XPath 1.0 或 3.1。结果显示类型明确的标量或规范化节点及诊断位置;XML 和结果文本不会作为 HTML 渲染。
常见用途
- 在配置或导入前验证 XML 属性筛选条件。
- 理解默认 XML 命名空间为何需要显式 XPath 前缀。
- 检查有限额的节点集合,将完整结果保存为 JSON。
使用方法
- 1.粘贴 XML 1.0 或选择严格 UTF-8 文件,也可载入示例。
- 2.填写 XPath 表达式;命名空间元素需提供前缀到 URI 的 JSON 映射,例如 {"b":"urn:books"},再运行查询。
- 3.检查结果类型和节点,按页浏览;确认适合分享后下载完整 JSON。
可执行查询示例
属性条件
XML: <books><book id="a" price="10">Alpha</book><book id="b" price="20">Beta</book></books>
XPath: //book[@price > 10]/@id
Namespaces: {}attribute id = b
价格条件选中第二本书,再取得 id 属性。
默认命名空间
XML: <books xmlns="urn:books"><book id="a">日本語 · 中文 · 𠮷</book></books>
XPath: //b:book/@id
Namespaces: {"b":"urn:books"}attribute id = a
显式 b 前缀对应默认 XML 命名空间;不加前缀的 //book 没有匹配。
数值标量
XML: <books><book price="10"/><book price="20"/></books>
XPath: sum(//book/@price)
Namespaces: {}number = 30
界面显示数值结果,JSON 以字符串 "30" 保存。
Unicode 标量
XML: <r>𠮷A</r>
XPath: substring(/r, 1, 1)
Namespaces: {}string = 𠮷
补充平面字符保留为一个 Unicode 字符,不会切出孤立代理项。
限制与说明
- XML 上限为 128 KiB UTF-8、131,072 个 UTF-16 单元、深度 64、5,000 个 DOM 项目(含属性)及 32 项命名空间声明。仅支持 XML 1.0;开头可选编码声明仅允许 UTF-8。DTD 和实体声明标记即使位于注释或 CDATA 中也会拒绝。 名称按解析器的 BMP 字符范围处理;元素、属性及命名空间前缀名称不支持补充平面字符,合法名称也可能因该范围拒绝;补充平面文本与属性值支持。
- 表达式最多 512 个 UTF-16 单元。路径、条件、除 namespace 外的轴、并集和除 id() 外的 XPath 1.0 核心函数采用 XPath 3.1 语义;不支持变量、自定义或资源函数及后续版本语法。string(//book) 对多个节点报错,需用 string((//book)[1]);比较、数值转换和舍入可能不同于 XPath 1.0,受 JavaScript 数值精度限制。
- 命名空间映射最多 32 项、8,192 个 UTF-16 单元;ASCII 前缀不超过 64 字符,URI 不超过 512 单元。xml 与 xmlns 保留,xml 已预定义;重复 JSON 键以最后值为准。无前缀名称仅匹配无命名空间节点;URI 是标识符,不会请求。
- 工作线程超过 8 秒会终止。超过 1,000 个匹配节点或完整 JSON 大于 2,000,000 个 UTF-8 字节,整次结果拒绝;序列化保守预算可能提前触发。预览最多 1,024 个 UTF-16 单元,每页 100 节点;修改输入、语言或取消会使结果和下载失效。
- 导出含表达式、实际命名空间映射、全部已接受的值和规范化序列化内容,可能含敏感数据。不会保留原始 XML 字节;相邻文本与 CDATA 合并,XML 声明被移除。路径按 DOM 全部兄弟节点位置编号,仅作诊断,不是可执行 XPath。数值以字符串保留 NaN、Infinity 和负零。
常见问题
为什么 //book 没有结果?
无前缀 XPath 元素名只匹配无命名空间元素。对于 <books xmlns="urn:books">,需映射 b 到 urn:books 并查询 //b:book;所选前缀不必与原 XML 前缀相同。
使用哪个 XPath 版本?
XPath 1.0 语法解析门和核心函数白名单对接 FontoXPath 3.1 求值器。这是明确的混合支持范围,不是完整 XPath 1.0 兼容或全部 XPath 3.1 功能。单节点转换和比较行为应在目标引擎再验证。
命名空间 URI、DTD 或表达式会联网吗?
URI 只是标识符。本地工作线程没有资源解析器;DTD 和实体声明、资源函数和扩展函数均拒绝。不保存输入,不执行后端查询。
预览截断后 JSON 也截断吗?
不会。预览明确提示截断;成功导出的 JSON 含全部已接受节点和值。超过节点或导出限额则不返回部分结果。