1、xpath表達式的基本格式node
xpath經過「路徑表達式」(Path Expression)來選擇節點。
xml
# 斜槓(/)做爲路徑內部的分割符。
# 同一個節點有絕對路徑和相對路徑兩種寫法。
# 絕對路徑(absolute path)必須用「/」起首,後面緊跟根節點,好比/step/step/...。
# 相對路徑(relative path)則是除了絕對路徑之外的其餘寫法,好比 step/step,也就是不使用「/」起首。
# 「.」表示當前節點。
# 「..」表示當前節點的父節點文檔
2、選擇節點的基本規則it
- nodename(節點名稱):表示選擇該節點的全部子節點
- 「/」:表示選擇根節點
- 「//」:表示選擇任意位置的某個節點
- 「@」: 表示選擇某個屬性io
3、實例ast
先看一個XML實例文檔。coding
<?xml version="1.0" encoding="ISO-8859-1"?>xpath
<bookstore>di
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>encoding<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book></bookstore>
[例1]
bookstore :選取 bookstore 元素的全部子節點。
[例2]
/bookstore :選取根節點bookstore,這是絕對路徑寫法。
[例3]
bookstore/book :選取全部屬於 bookstore 的子元素的 book元素,這是相對路徑寫法。
[例4]
//book :選擇全部 book 子元素,而無論它們在文檔中的位置。
[例5]
bookstore//book :選擇全部屬於 bookstore 元素的後代的 book 元素,而無論它們位於 bookstore 之下的什麼位置。
[例6]
//@lang :選取全部名爲 lang 的屬性。
4、xpath的謂語條件(Predicate)
所謂「謂語條件」,就是對路徑表達式的附加條件。
全部的條件,都寫在方括號「[]」中,表示對節點進行進一步的篩選。
[例7]
/bookstore/book[1] :表示選擇bookstore的第一個book子元素。
[例8]
/bookstore/book[last()] :表示選擇bookstore的最後一個book子元素。
[例9]
/bookstore/book[last()-1] :表示選擇bookstore的倒數第二個book子元素。
[例10]
/bookstore/book[position()<3] :表示選擇bookstore的前兩個book子元素。
[例11]
//title[@lang] :表示選擇全部具備lang屬性的title節點。
[例12]
//title[@lang='eng'] :表示選擇全部lang屬性的值等於「eng」的title節點。
[例13]
/bookstore/book[price] :表示選擇bookstore的book子元素,且被選中的book元素必須帶有price子元素。
[例14]
/bookstore/book[price>35.00] :表示選擇bookstore的book子元素,且被選中的book元素的price子元素值必須大於35。
[例15]
/bookstore/book[price>35.00]/title :表示在例14結果集中,選擇title子元素。
[例16]
/bookstore/book/price[.>35.00] :表示選擇值大於35的「/bookstore/book」的price子元素。
5、通配符
# 「*」表示匹配任何元素節點。
# 「@*」表示匹配任何屬性值。
# node()表示匹配任何類型的節點。
[例17]
//* :選擇文檔中的全部元素節點。
[例18]
/*/* :表示選擇全部第二層的元素節點。
[例19]
/bookstore/* :表示選擇bookstore的全部元素子節點。
[例20]
//title[@*] :表示選擇全部帶有屬性的title元素。
6、選擇多個路徑
用「|」選擇多個並列的路徑。
[例21]
//book/title | //book/price :表示同時選擇book元素的title子元素和price子元素。