表達式 | 描述 |
---|---|
nodename | 選取此節點的全部子節點 |
/ | 從根節點選取 |
// | 從匹配選擇的當前節點,而不考慮其餘節點 |
. | 選取當前節點 |
.. | 選取當前節點的父節點 |
@ | 選取屬性 |
路徑表達式 | 結果 |
---|---|
bookstore | 選取 bookstore 元素的全部子節點。 |
/bookstore | 選取根元素 bookstore。註釋:假如路徑起始於正斜槓( / ),則此路徑始終表明到某元素的絕對路徑! |
bookstore/book | 選取屬於 bookstore 的子元素的全部 book 元素。 |
//book | 選取全部 book 子元素,而無論它們在文檔中的位置。 |
bookstore//book | 選擇屬於 bookstore 元素的後代的全部 book 元素,而無論它們位於 bookstore 之下的什麼位置。 |
//@lang | 選取名爲 lang 的全部屬性 |
查找頁面根元素://node
查找頁面上全部的input元素://input函數
查找頁面上第一個form元素內的直接子input元素(即只包括form元素的下一級input元素,使用絕對路徑表示, 單/號)://form[1]/input性能
查找頁面上第一個form元素內的全部子input元素(只要在form元素內的input都算,無論還嵌套了多少個其餘標 籤,使用相對路徑表示,雙//號)://form[1]//inputspa
查找頁面上第一個form元素://form[1]code
查找頁面上id爲loginForm的form元素://form[@id='loginForm']orm
查找頁面上具備name屬性爲username的input元素://input[@name='username']xml
查找頁面上id爲loginForm的form元素下的第一個input元素://form[@id='loginForm']/input[1]ci
查找頁面具備name屬性爲contiune而且type屬性爲button的input元素://input[@name='continue'][@type='button']文檔
查找網頁中全部屬性爲id的元素 : //@id字符串
路徑表達式 | 結果 |
---|---|
row 2 col 1 | row 2 col 2 |
/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'] | 選取全部 title 元素,且這些元素擁有值爲 eng 的 lang 屬性。 |
/bookstore/book[price>35.00] | 選取 bookstore 元素的全部 book 元素,且其中的 price 元素的值須大於 35.00。 |
/bookstore/book[price>35.00]/title | 選取 bookstore 元素中的 book 元素的全部 title 元素,且其中的 price 元素的值須大於 35.00。 |
通配符 | 描述 |
---|---|
* | 匹配任何元素節點。 |
@* | 匹配任何屬性節點。 |
node() | 匹配任何類型的節點。 |
路徑表達式 | 結果 |
---|---|
/bookstore/* | 選取 bookstore 元素的全部子元素。 |
//* | 選取文檔中的全部元素。 |
//title[@*] | 選取全部帶有屬性的 title 元素。 |
經過在路徑表達式中使用"|"運算符,表示選取若干個路徑
路徑表達式|結果
----------|------
//book/title | //book/price 選取 book 元素的全部 title 和 price 元素。
//title | //price 選取文檔中的全部 title 和 price 元素。
/bookstore/book/title | //price 選取屬於 bookstore 元素的 book 元素的全部 title 元素,以及文檔中全部的 price 元素。
舉例 | 舉例 |
---|---|
text() | book/author/text() |
string() | book/author/string() |
data() | book/author/data() |
. | book/author/. |
XML例子
<book> <author>Tom<em><John></em></author> <pricing> <price>20</price> <discount>0.8</discount> </pricing> </book>
text()
**常常在Xpath表達式最後看到text(),它僅僅是返回所指元素的文本內容
爬取的Xpath格式爲book/author/text() 爬取下來的內容是Tom cat 其中John不屬於author的直接節點內容
string()
string()函數會獲得所指元素的全部節點文本內容,這些文本講會被拼接成一個字符串。
爬取的xpath格式爲book/author/string() 爬取下來的內容是Tom John cat author頭到尾部中間全部的內容都爬出來
data()
大多數時候,data()函數和string()函數通用,並且不建議常常使用data()函數,有數據代表,該函數會影響XPath的性能。
爬取的xpath格式爲book/pricing/data() 爬取下來的內容是返回分開的20和0.8 他們的類型並非字符串而是xs:anyAtomicType,因而就可使用數學函數作必定操做。
爬取內容都爲數字的時候只能使用data(),不能使用text()或 string(),由於XPath不支持字符串作數學運算。