1.表达式:node
nodename # 节点名
/ # 若在起始位置,则代表从根节点选取node;若不在起始位置,代表选取子节点,本意都是选取所有子节点
// # 从任意位置选取node节点
@ # 选取属性
* # 通配符
. #当前节点复制代码
2.谓语:bash
[n] # 第n个, -- eg:第一个[1]
[last()] # 最后一个
[position()<n] # 第n个位置以前的所有指定节点
node[@attr] # 拥有attr属性的节点
node[@attr='val'] # 属性attr的值为val的节点
node[contains(@class, 'val')] # class属性中包含val的节点复制代码
A/child::B ==> A/B # 选取A节点的子节点B
parent # 父节点
descendant # 全部后代节点
ancestor # 全部先辈节点
descendant-or-self # 全部后代元素及其自己
preceding-sibling # 全部先辈节点及其自己
following-sibling # 当前节点后面的同级节点
preceding # 整个文档中,当前节点以前的全部节点
preceding-sibling # 父节点中,当前节点以前的全部同级节点
following # 整个文档中,当前节点以后的全部节点
self # 当前节点自己
attribute # 当前节点的全部属性
namespace # 当前节点全部的命名空间复制代码
| # 并集
+ # 加法
- # 减法
* # 乘法
div # 除法
= # 等于
!= # 不等于
< # 小于
<= # 小于
> # 大于
>= # 大于等于
or # 或
and # 与
mod # 取余复制代码
question # 选取全部 question 元素的全部子节点
/question #选取根元素 question
question/a # 选取 question 元素下全部为 a 的子元素
//div # 选取全部的 div 元素,不论其出如今文档的任何地方
question//div # 选取 question 元素下全部的 div 后代元素 (/ 选取的是直接子元素,这里是全部的后代元素)
question//span/text() #选取 question 元素下全部 span 元素中的文本值
question//a/@href #选取 question 元素下全部 a 元素中的 href 属性值。 @ 后面能够是任意属性名,都可以取到值
/question/div[1] # 选取 question 的第一个 div 子元素。 注意这里第一个是从索引 1 开始的
/question/div[last()] # 选取 question 第最后一个 div 子元素
/question/div[last()-1] # 选取 question 的倒数第二个 div 子元素
//div[@lang] # 选取全部拥有lang 属性的 div 元素
//div[@lang='eng'] # 选取全部 lang 属性为 eng 的 div 元素
/div/* # 选取属于 div 元素的全部子节点
//* # 选取全部元素
//div/a | //div/p #选 取全部 div 元素的 a 元素或者 p 元素
//span | //input # 选取文档中全部的 span 和 input 元素复制代码
starts-with #匹配一个属性开始位置的关键字
eg: //input[starts-with(@name,'name1')] #查找name属性中开始位置包含'name1'关键字的页面元素
contains #匹配一个属性值中包含的字符串
eg: //input[contains(@name,'na')] #查找name属性中包含na关键字的页面元素
复制代码
1. spa