XPath查询
以一段XML文档为实例
<?xml version="1.0" encoding="utf-8"?>
<users>
<user username="zhangsan" password="123"/>
<user username="lisi" password="456"/>
<user username="wangwu" hobby="football"/>
<user username="zhaoliu" age="25"/>
</users>
- XPath路径表达式
表达式 | 描述 |
---|
nodename | 选取此节点的所有子节点 |
/ | 从根节点中选取 |
// | 从文档中的任意节点位置选取 |
. | 选取当前节点 |
… | 选取当前节点的父节点 |
@ | 选取属性 |
- 实例
路径表达式 | 描述 |
---|
users | 选取users元素的所有子节点 |
/users | 选取根元素 users |
/users/user | 选取属于users 的子元素中的所有 user 元素 |
//user | 选取所有 user 子元素,无论它们在何位置,都选取 |
/users//user | 选取属于users 的子元素中的所有 user 元素,无论它们在何位置 |
//@username | 选取名为username的所有属性 |
- 带有谓语的实例
路径表达式 | 描述 |
---|
/users/user | 选取属于 users 子元素的第一个 user 元素 |
/users/user[last()] | 选取属于 users 子元素的最后一个 user 元素 |
/users/user[last()-1] | 选取属于 users 子元素的倒数第二个 user 元素 |
/users/user[position() < 3] | 选取属于 users 子元素的最前面两个 user 元素 |
//user[@username] | 选取所有拥有名为 username 的属性的 user 元素 |
//user[@username=‘zhangsan’] | 选取所有拥有名为 username 且其值为"zhangsan" 的属性的 user 元素 |
/users/user[age>20] | 选取 users 元素的所有拥有名为age 且其值大于20 的属性的 user 元素 |
//user[@username] | 选取所有拥有名为 username 的属性的 user 元素。 |
- 通配符
通配符 | 描述 |
---|
* | 匹配任何元素节点 |
@* | 匹配任何属性节点 |
node() | 匹配任何类型的节点 |
- 带通配符的实例
路径表达式 | 描述 |
---|
/users/* | 选取 users 元素下的所有子元素。 |
//* | 选取文档中的所有元素。 |
//username[@*] | 选取所有带有属性的 username 元素。 |