🎯

XPath 在线测试

「这段 HTML 里所有商品价格怎么一条表达式全抓出来?」——左侧粘贴 XML 或 HTML,输入 XPath 表达式,右侧实时列出每个匹配节点的节点名、文本摘要与结构摘要。浏览器原生 XPath 1.0 求值,纯本地运行,写爬虫、调试解析规则即写即验。

⚡ 实时匹配 + 计数 🌳 XML / HTML 双模式 📜 节点名/文本/结构三列展示 🛡️ 表达式括号/轴名预检 🤖 AI 节点参谋 🌙 黑夜模式

🧾XML / HTML 文档实时解析

✏️XPath 表达式输入即查询

支持 XPath 1.0://node 任意层级、/node 直接子级、[@attr='值'] 谓词、[1] 位置、@attr 属性、text() 文本、contains() 等函数;求值前会做括号配对与轴名预检。

📊匹配节点共 0 条

🎯

粘贴 XML/HTML 并输入表达式后自动出结果

#节点文本摘要结构摘要
🤖 AI 节点参谋
点下方按钮,让 AI 解读这条表达式的匹配结果,或针对你的取数需求改写更稳的 XPath。
📐
求值口径:本工具使用浏览器原生 XPath 1.0(document.evaluate)求值,结果按文档顺序快照排列。XML 模式用 application/xml 严格解析(标签不闭合等错误会明确提示);HTML 模式用 text/html 宽松解析(自动补全缺失标签,标签名请用小写)。带命名空间前缀的表达式(如 //x:book)需文档声明对应前缀,未注册时会给出改写提示。结果列表渲染上限 500 条。全部求值在浏览器本地完成,点 AI 按钮才发送表达式与匹配摘要(前 3 条 ≤200 字)。

为什么需要 XPath 测试工具

写爬虫或解析 XML 接口时,最怕表达式写完跑一遍才发现匹配为空——是路径写错、层级看错,还是命名空间没处理?本工具把「写表达式 → 看结果」的循环压缩到一次输入:左侧粘贴文档,右侧实时列出每个匹配节点的名称、文本与结构摘要,写对写错立刻知道。

和浏览器开发者工具有什么不同

DevTools 的 $x() 也能跑 XPath,但只能在已打开的页面上用。本工具接受任意粘贴的 XML/HTML 片段,提供双解析模式、表达式预检(括号配对、轴名白名单)、结构化结果列表,还能让 AI 解读结果或按需求改写表达式,是独立的调试工作台。

使用方法

  1. 选择文档类型(XML 严格解析 / HTML 宽松解析),粘贴文档内容;
  2. 输入 XPath 表达式,如 //book/title、//div[class=""='price']、//a/@href;
  3. 右侧实时列出匹配数与每个节点的名称、文本摘要、结构摘要;
  4. 表达式有括号/引号未配对或未知轴名时,会在求值前给出中文提示;
  5. 点「填示例」一键填入示例 XML 与表达式体验;点 AI 按钮获取结果解读与改写建议。输入自动保存在本浏览器。

更新记录

  • 1.02026-10-16全新上线:XML/HTML 双模式解析;浏览器原生 XPath 1.0 求值(document.evaluate);表达式预检(括号/引号配对、轴名白名单提示);匹配节点三列摘要展示(节点名/文本/结构);内置示例一键填入;接入 AI 节点参谋;纯本地计算,支持黑夜模式。

常见问题

XML 和 HTML 模式有什么区别?
XML 模式严格解析:标签必须闭合、区分大小写,解析失败会明确报错,适合接口返回的 XML 文档。HTML 模式宽松解析:自动补全缺失标签、标签名统一转小写,适合网页源码片段。抓网页数据请选 HTML 模式并用小写标签名写表达式。
为什么 //x:book 这类带前缀的表达式报错?
XPath 中的 x: 前缀需要注册命名空间映射,浏览器原生接口无法从文档自动推断。遇到带命名空间的 XML,可以改用 //*[local-name()='book'] 绕过前缀,本工具检测到命名空间错误时会给出这条改写提示。
匹配属性节点怎么写?
用 @ 语法,如 //a/@href 匹配所有链接的 href 属性。结果列表中属性节点会显示为「属性名=值」的形式,节点名列显示属性名。
文本摘要和结构摘要分别是什么?
文本摘要是节点的 textContent(节点内全部文字,压缩空白后截取前 60 字);结构摘要是节点的 outerHTML(完整标签结构,截取前 120 字)。前者看内容,后者看结构,超长都会加省略号。

💬 留言板 0

全部留言需审核通过后展示
💬

还没有留言,来抢沙发吧!

✍️ 说点什么
0 / 500
图形验证码