XPath是一种在XML文档中查找和选取节点的查询语言,通过路径表达式导航树形结构的节点。使用/从根节点开始、//任意位置匹配、@选取属性,结合谓语[ ]按索引、属性或内容筛选,如//book[@category='fiction' and price

XPath 是一门在 XML 文档中查找和选取节点的查询语言。它被广泛应用于 XML 解析、XSLT 转换以及自动化测试中,是处理结构化数据的重要工具。掌握基本的 XPath 语法,能让你快速定位所需节点,无论是在开发、调试还是数据提取过程中都非常实用。
什么是 XPath?
XPath 使用“路径表达式”来导航 XML 文档中的节点。XML 文档本质上是一棵树形结构,每个元素、属性、文本等都是一个节点。XPath 就像文件系统的路径一样,通过层级关系定位目标节点。
例如,有如下 XML 片段:
你可以用 XPath 快速选出所有书名、特定类别的书籍,或价格高于某值的记录。
基本路径表达式
XPath 提供了几种基础写法来选取节点:
- /:从根节点开始选择。例如 /bookstore/book 表示选择根元素 bookstore 下的所有 book 子节点。
- //:从文档中任意位置匹配节点。例如 //title 会选出所有 title 元素,不论它们在什么层级。
- .:表示当前节点。
- ..:表示当前节点的父节点。
- @:用于选取属性。例如 //book/@category 获取所有 book 元素的 category 属性值。
比如要选出所有非小说类书籍的作者,可以写:
//book[@category='non-fiction']/author使用谓语筛选节点
谓语(Predicates)放在方括号 [] 中,用来进一步过滤节点。常见用法包括按索引、属性或子元素内容筛选。
- //book[1]:选择第一个 book 元素(注意:XPath 索引从 1 开始)。
- //book[last()]:选择最后一个 book 元素。
- //book[price>30]:选择 price 大于 30 的 book。
- //book[title='Learning XML']:选择标题为 "Learning XML" 的书籍。
也可以组合多个条件:
//book[@category='fiction' and price常用轴和函数
XPath 还支持“轴”(Axes),用于定义相对于当前节点的节点集。常见的有:
- child:::子节点,如 child::title 等同于 ./title。
- parent:::父节点,如 parent::bookstore。
- following-sibling:::后面的兄弟节点。
- ancestor:::所有祖先节点。
同时,XPath 内置了一些函数:
- text():获取节点的文本内容,如 //title/text()。
- contains():模糊匹配,如 //title[contains(text(), 'XML')] 匹配包含 "XML" 的标题。
- starts-with():判断是否以指定字符串开头。
这些功能让 XPath 更加灵活,适用于复杂查询场景。
基本上就这些。学会基础路径、谓语和常用函数后,你就能高效地从 XML 中提取所需信息了。不复杂但容易忽略细节,多练习几次就能熟练掌握。










