XPath 路徑表達式
XPath 使用路徑表達式來選取 Html 中的節點或者節點集。
|
表達式
|
描述
|
|---|---|
| nodename | 選取此節點的所有子節點。 |
| / | 從根節點選取。 |
| // | 從匹配選擇的當前節點選擇文檔中的節點,而不考慮它們的位置。 |
| . | 選取當前節點。 |
| .. | 選取當前節點的父節點。 |
| @ | 選取屬性。 |
HTML 實例
我們將在下面的例子中使用這個 HTML
<html>
<bookstore>
<book id="book1">
<title lang="eng">學習xpath</title>
<price id="test1">29.99</price>
</book>
<book id="book2">
<title lang="eng">學習xpath</title>
<price id="test2">39.95</price>
</book> </bookstore>
</html>
實例
在下面的表格中,我們已列出了一些路徑表達式以及表達式的結果:
|
路徑表達式
|
結果
|
|---|---|
| //bookstore | 選取 bookstore 元素的所有子節點。 |
| //bookstore/book | 選取屬於 bookstore 的子元素的所有 book 元素。 |
| //book | 選取所有 book 子元素,而不管它們在文檔中的位置。 |
| //bookstore//book | 選擇屬於 bookstore 元素的后代的所有 book 元素,而不管它們位於 bookstore 之下的什么位置。 |
| //book[@lang] | 選取包含 lang 的有屬性所有book元素,而不管它們在文檔中的位置。 |
常用的XPath 軸
軸可定義相對於當前節點的節點集。
|
軸名稱
|
結果
|
|---|---|
| ancestor | 選取當前節點的所有先輩(父、祖父等)。 |
| parent | 選取當前節點的父節點。 |
| following-sibling | 選取當前節點之后的所有同級節點。 |
| preceding-sibling | 選取當前節點之前的所有同級節點。 |
假如我們需要定位:
第一個book節點的title,因為此處的2個title標簽的所有屬性都一樣,所以我們需要借助它鄰近的元素定位到它。
//price[@id='test1']/preceding-sibling::title
xpath解讀:首先找到id是test1的price節點,然后找到它之前的同級title節點。
//book[@id='book1']/title
xpath解讀:首先找到id是book1的book節點,然后找到它直接子節點title。
其它軸實例:
//price/parent::book
xpath解讀:定位price的直接父級節點book
//title/following-sibling:
rice
xpath解讀:定位title后面同級節點price
//title//ancestor::book
xpath解讀:定位title的所有父級、祖父級的book節點
xpath的/和//區別:
/是僅僅查找它直接父節點或者子節點
//是查找它所有的父級和祖父級...節點
詳情請查閱:
