我自己常用的 :
①、/节点1/节点2.../节点n :获取这个全路径下所有名字为 节点n的节点,返回一个集合
②、child::book :选取所有属于当前节点的子元素的 book 节点
RT,学习一篇博客所做的笔记,留做存根
Xpath写法名称 | 涵义 | 用法示例 |
普通的写法: | ||
nodename | 选取此节点的所有子结点 | |
/ | 从根结点选取 | |
// | 从匹配选择的当前结点选择文档中的结点 ,而不考虑它们的位置 | |
. | 选取当前结点 | |
.. | 选取当前结点的父结点 | |
@ | 选取属性 | |
通配符: | ||
* | 匹配任何元素结点 | /bookstore/* :选取bookstore元素的所有子元素 //* : 选取文档中的所有元素 |
@* | 匹配任何属性结点 | //title[@*] :选取所有带有属性的title元素 |
node() | 匹配任何类型的结点 | |
谓词: 都是举例说明 | ||
/bookstore/book[1] | 选取属于bookstore子元素的第一个book元素 | |
/bookstore/book[last()] | 选取属于bookstore子元素的最后一个book元素 | |
/bookstore/book[last()-1] | 选取属于bookstore子元素的倒数第二个book元素 | |
/bookstore/book[position()<3] | 选取属于bookstore子元素的前面两个book元素 | |
//title[@lang] | 选取拥有名为lang属性的title元素 | |
//title[@lang='eng'] | 选取所有的拥有 lang="eng" 属性的title元素 | |
/bookstore/book[price>35.00] | 选取 bookstore 元素的所有 book 元素,且其中的 price 元素的值须大于 35.00 | |
/bookstore/book[price>35.00]/title | 选取 bookstore 元素中的 book 元素的所有 title 元素,且其中book元素的price元素的值须大于35.00。 | |
选取多个路径 | ||
//book/title | //book/price | 选取 book 元素的所有 title 和 price 元素 | |
//title | //price | 选取文档中的所有 title 和 price 元素 | |
/bookstore/book/title | //price | 选取属于 bookstore 元素的 book 元素的所有 title 元素,以及文档中所有的 price 元素 | |
使用当前结点的相对位置 | ||
child::book | 选取所有属于当前节点的子元素的 book 节点 | |
attribute::lang | 选取当前节点的 lang 属性 | |
child::* | 选取当前节点的所有子元素 | |
attribute::* | 选取当前节点的所有属性 | |
child::text() | 选取当前节点的所有文本子节点 | |
child::node() | 选取当前节点的所有子节点 | |
descendant::book | 选取当前节点的所有 book 后代 | |
ancestor::book | 选择当前节点的所有 book 先辈 | |
ancestor-or-self::book | 选取当前节点的所有 book 先辈以及当前节点(如果此节点是 book 节点) | |
child::*/child::price | 选取当前节点的所有 price 孙节点 |