工具
ZH

XPath 在线测试工具

输入 XPath 表达式,结果随输入实时显示:匹配的元素、属性和文本,或表达式返回的数字、字符串或布尔值。本工具使用浏览器内置的 XPath 1.0 引擎运行。

示例(点击即可试用):

    隐私保护:您的数据仅在浏览器中处理,绝不会被上传。

    如何测试 XPath 表达式

    1. 粘贴 XML、打开文件,或使用示例商品目录。
    2. 输入 XPath 表达式,或点击任一示例。结果会随输入实时更新,按 Enter 键可立即执行。
    3. 查看结果:匹配节点的数量及其类型和内容,或表达式返回的数字、字符串或布尔值。

    XPath 语法速查表

    表达式选取的内容
    /catalog根元素 catalog
    //product任意层级的所有 product 元素
    /catalog/product/name从根节点逐级选取每个商品的 name
    //product/@id每个商品的 id 属性
    //product[@category='books']category 属性为 books 的商品
    //product[price > 20]价格高于 20 的商品(按数字比较)
    //product[contains(name, 'USB')]名称包含“USB”的商品(区分大小写)
    //product[not(tags)]没有 tags 子元素的商品
    (//product)[1]文档中的第一个商品
    //product[1]每个父元素中的第一个商品
    //product[last()]每个父元素中的最后一个商品
    //name/text()name 中的文本节点
    //price/..每个 price 的父元素
    //*[local-name()='product']任意命名空间中的 product 元素
    count(//product)商品数量
    sum(//price)所有价格的总和
    string(//product[1]/name)以字符串形式返回第一个商品的名称

    XPath 中的命名空间

    XPath 1.0 没有默认命名空间的概念。在带有 xmlns="…" 的文档(例如 sitemap 或 NF-e 发票)中,//url 什么也找不到,因为这些元素属于该命名空间。因此,本工具会把默认命名空间映射到前缀 x:(如果 x 已被占用,则使用 d:),这样 //x:url/x:loc 就能正常工作。文档中已声明的前缀(例如 CFDI 发票中的 cfdi:)可以直接使用。在无法配置命名空间的工具中,//*[local-name()='url'] 写法在任何地方都适用。

    常见问题

    支持哪个版本的 XPath?

    支持 XPath 1.0,即所有浏览器和大多数 XML 库内置的版本。XPath 2.0 及更高版本中的函数,例如 matches()、lower-case() 或 string-join(),均不可用。

    为什么我的 XPath 什么也查不到?

    最常见的原因有:文档使用了默认命名空间(请使用示例下方提示的 x: 前缀);大小写不一致——XPath 区分大小写;以及位置序号从 1 开始,而不是从 0 开始。

    会显示多少条结果?

    所有匹配项都会计数,并列出前 500 个匹配项的节点类型和内容。

    我的 XML 会被上传吗?

    不会。XML 的解析和查询都在你的浏览器中进行。只有通过 URL 加载的文件才会经由我们的服务器获取。