XPath 在线测试工具 - XML/HTML 表达式查询
输入 XML 和 XPath 表达式开始查询
历史记录
什么是 XPath?
XPath(XML Path Language)是一种用于在 XML 或 HTML 文档中定位节点的查询语言。它使用路径表达式来选取文档中的节点或节点集,广泛应用于数据提取、网页解析、XML 处理和自动化测试等领域。XPath 不仅支持纯 XML 文档,也能处理 HTML 文档,是现代 Web 开发和数据处理中不可或缺的工具。XPath 1.0 由 W3C 在 1999 年发布,随后发展为 XPath 2.0、3.0 和最新的 XPath 3.1 标准,支持更多数据类型和功能。
📋 XPath 常用表达式速查
/绝对路径,从根节点开始/bookstore/book//相对路径,从当前节点向下选择//book/title.当前节点./@id..父节点../parent@选取属性@class, @href*匹配任何元素节点/*node()匹配任何类型的节点/*/*[node()][n]选取第 n 个子元素book[1][last()]选取最后一个子元素book[last()][position()<n]位置条件筛选book[position()<3][@attr]选取具有指定属性的节点//*[@id='main'][text()=]选取具有指定文本内容的节点//title[text()='Hello']📋 使用建议和最佳实践
- 使用
//(相对路径)比/(绝对路径)更灵活,因为它不依赖于文档的顶层结构 - 对于复杂的 XPath 表达式,建议先用本工具的"示例"功能加载测试数据,再逐步构建表达式
- 使用
[@*可以快速定位有属性的节点,使用[text()=可以根据文本内容查找元素 - XPath 轴(Axis)如
ancestor、descendant、following-sibling可以实现更复杂的导航操作 - 对于 HTML 文档,注意处理标签大小写问题,建议使用
translate()函数进行大小写无关匹配 - 定期使用本工具的"常用 XPath"库中的模板,避免重复编写常见的查询表达式
工具介绍
XPath 在线测试工具是一款强大的 XML/HTML 节点查询利器,支持实时表达式测试、匹配结果高亮、常用表达式库等功能。无论您是数据分析师需要从网页提取信息,还是开发者调试 XML 查询语句,本工具都能提供便捷高效的调试体验。内置丰富的常用 XPath 表达式模板,涵盖元素选择、属性查询、文本匹配等常见场景,支持格式化、历史记录等功能。
使用方法
- 1输入 XML/HTML 文档
在左侧编辑框中输入或粘贴您的 XML/HTML 文档内容,可以点击"格式化"按钮自动格式化文档结构。
- 2输入 XPath 表达式
在右侧的 XPath 输入框中输入您的查询表达式,或使用"常用 XPath"库中的预设模板快速填充。
- 3查看查询结果
工具会实时显示匹配结果,包括节点类型(元素、属性、文本)、节点名称和具体内容。点击结果项可单独复制。
- 4使用历史记录
所有查询的历史记录会自动保存,点击历史记录可以快速恢复之前的 XPath 表达式和对应的文档内容。
使用技巧
- 使用右侧<strong>"常用 XPath"</strong>库可以快速套用预置的 XPath 表达式模板,避免从零编写
- 点击<strong>"示例"</strong>按钮可以加载预设的测试数据,快速体验 XPath 查询功能
- 在 XPath 中使用 <code>@</code> 符号可以选择属性,如 <code>//img/@src</code> 选取所有图片的 src 属性
- 使用 <code>text()</code> 函数可以匹配文本内容,如 <code>//title[text()="Hello"]</code>
- 本工具支持 CodeMirror 编辑器的<strong>格式化</strong>和<strong>换行切换</strong>功能,提升编辑体验
- 定期查看<strong>"历史记录"</strong>面板,可以快速回溯之前的查询操作
常见问题
XPath 和 CSS 选择器有什么区别?
XPath 和 CSS 选择器都可以用于选取 HTML/XML 文档中的节点,但它们有以下主要区别:<strong>方向性</strong>:XPath 支持向前和向后遍历(可以选取父节点和祖先节点),而 CSS 选择器只能向下遍历;<strong>文本匹配</strong>:XPath 可以直接通过 text() 函数匹配文本内容,CSS 选择器无法做到这一点;<strong>位置筛选</strong>:XPath 支持基于位置的筛选(如 [1]、[last()]),CSS 选择器虽然有 :nth-child() 但功能有限;<strong>轴导航</strong>:XPath 支持轴(Axis)操作如 ancestor、following-sibling 等,可以进行更复杂的导航。
如何在 HTML 中使用 XPath?
虽然 XPath 最初是为 XML 设计的,但它同样可以用于 HTML 文档。使用时需要注意:<strong>标签大小写</strong>:HTML 标签通常是小写的,XPath 匹配时需注意大小写;<strong>隐式标签</strong>:HTML 中有些标签是隐式嵌套的(如 <code><td></code> 必须在 <code><tr></code> 内),XPath 查询需要考虑文档的实际结构;<strong>DOCTYPE 影响</strong>:如果 HTML 文档包含 DOCTYPE,XPath 查询可能需要从 <code>/html</code> 或 <code>/DOCTYPE</code> 开始。本工具已经针对 HTML 文档的 XPath 查询进行了优化。
XPath 中的轴(Axis)有哪些常用类型?
XPath 轴用于定位相对于当前节点的节点集,常用轴包括:<strong>child</strong>:当前节点的子节点(默认轴);<strong>parent</strong>:当前节点的父节点;<strong>ancestor</strong>:当前节点的所有祖先节点;<strong>descendant</strong>:当前节点的所有后代节点;<strong>following-sibling</strong>:当前节点之后的同级节点;<strong>preceding-sibling</strong>:当前节点之前的同级节点;<strong>following</strong>:文档中当前节点之后的所有节点;<strong>preceding</strong>:文档中当前节点之前的所有节点。轴的语法格式为 <code>轴名::节点测试</code>,如 <code>ancestor::div</code>。
为什么我的 XPath 表达式没有返回结果?
XPath 表达式无结果的常见原因包括:<strong>路径不正确</strong>:检查 XPath 路径是否与文档结构匹配,可以使用本工具的"示例"功能验证;<strong>命名空间问题</strong>:如果 XML 文档使用了命名空间,需要在 XPath 中注册并使用命名空间前缀;<strong>标签大小写</strong>:XPath 是大小写敏感的,确保标签名完全匹配;<strong>索引从 1 开始</strong>:XPath 的索引从 1 开始而非 0,<code>[0]</code> 不会返回结果;<strong>属性选择错误</strong>:属性需要使用 <code>@</code> 前缀,如 <code>@class</code> 而非 <code>class</code>。