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