XPath 语法
|
XPath中有七种类型的节点:元素,属性,文本,命名空间,处理指令,注释以及文档(根)节点。除了节点之外,还有基本值(Atomic value)的概念。
基本值:无父或无子的节点。常见于文本。
项目(Item):基本值或者节点。
/ 从根节点选取,即绝对路径;
// 从当前节点选取,即相对路径;
. 选取当前节点;
.. 选取当前节点的父节点;
@ 选取属性。
谓语(Predicates)用来查找某个特定的节点或者包含某个指定的值的节点:
- /bookstore/book[1] 选取bookstore子元素的第一个book元素;
- /bookstore/book[last()] 选取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。
* 匹配任何元素节点;
@*匹配任何属性节点;
node() 匹配任何类型的节点
text() 匹配文本节点
//book/title | //book/price 选取book元素的所有title和price元素。
XPath轴(Axes)
- ancestor 选取当前节点的所有先辈;
- ancestor-or-self 选取当前节点及其所有先辈;
- descendant 选取当前节点的所有后辈;
- descendant-or-self 选取当前节点及其所有后辈;
- parent 选取当前节点的父节点;
- child 选取当前节点的子节点;
- following 选取当前节点之后的所有节点;
- following-sibling 选取当前节点之后的所有兄弟节点;
- preceding 选取当前节点之前的所有节点;
- preceding-sibling 选取当前节点之前的所有兄弟节点;
- self 选取当前节点;
- attribute 选取当前节点所有属性;
- namespace 选取当前节点的所有命名空间节点。
用法,比如要查找元素之后的元素,使用'//a/following::span'。
XPath运算符
- | 计算两个节点集;
- + - * div mod加减乘除求余;
- = != < <= > >= 比较;
- or and 或与。