XPath语法:
XPath使用路径表达式来选择XML中的结点或结点组。
1、用例:
<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book> <title lang="en">Harry Potter</title> <price>29.99</price> </book> <book> <title lang="en">Learning XML</title> <price>39.95</price> </book> </bookstore>
2、选择结点:
下表列出了最有用的路径表达式:
表达式 | 描述 |
---|---|
结点名 | 选择所有具有该结点名的结点 |
/ | 从根结点选择(绝对路径) |
// | 从当前结点选择而不管其在何处 |
. | 选择当前结点 |
.. | 选择父结点 |
@ | 选择属性 |
应用于前面的例子,结果如下:
路径表达式 | 结果 |
---|---|
bookstore | 选择所有名为“bookstore”的结点 |
/bookstore | 选择根元素bookstore |
bookstore/book | 从bookstore的孩子结点中选择所有book结点 |
//book | 从文本中选择所有book结点而不管其在哪 |
bookstore//book | 在bookstore的后继中选择所有book结点 |
//@lang | 在文本中选择所有“lang”属性 |
3、谓词(Predicates):
谓词用来查询某一特定结点或具有特定值的结点。
谓词总是用一对方括号来框住。
如下表所示:
Path Expression | Result |
---|---|
/bookstore/book[1] | 选取bookstore第一个名为book的子结点 |
/bookstore/book[last()] | 选取bookstore最后一个名为book的子结点 |
/bookstore/book[last()-1] | 选取bookstore倒数第二个名为book的子结点 |
/bookstore/book[position()<3] | 选取bookstore前2个book子结点 |
//title[@lang] | 选取所有具有“lang”属性的title结点 |
//title[@lang='en'] | 选取所有具有“lang”属性且为‘en’的title结点 |
/bookstore/book[price>35.00] | 选取bookstore子结点中price>35.00的book结点 |
/bookstore/book[price>35.00]/title | 选取bookstore子结点中price>35.00的book结点的title |
4、选取未知结点:
通配符 | 描述 |
---|---|
* | 匹配任何元素结点 |
@* | 匹配任何属性结点 |
node() | 匹配任何类型的任何结点 |
如下所示:
路径表达式 | 结果 |
---|---|
/bookstore/* | 选取bookstore的所有子结点 |
//* | 选取文本中所有元素结点 |
//title[@*] | 选取具有属性的标题元素 |
5、选取多个路径:
运用 | 运算符来实现多路径选择。
如下所示:
路径表达式 | 结果 |
---|---|
//book/title | //book/price | 选出所有book结点中的title和price结点 |
//title | //price | 选出文本中的title和price结点 |
/bookstore/book/title | //price | 选取bookstore中的book元素中的title元素和所有price元素 |