xpath路徑表達式筆記

一、xpath表達式的基本格式

1. 斜杠(/)作為路徑內部的分割符。
2. 同一個節(jié)點有絕對路徑和相對路徑兩種寫法。
3. 絕對路徑(absolute path)必須用"/"起首,后面緊跟根節(jié)點,比如/step/step/...。
4. 相對路徑(relative path)則是除了絕對路徑以外的其他寫法,比如 step/step,也就是不使用"/"起首。
5. "."表示當前節(jié)點。
6. ".."表示當前節(jié)點的父節(jié)點

二、選擇節(jié)點的基本規(guī)則

- nodename(節(jié)點名稱):表示選擇該節(jié)點的所有子節(jié)點
- "/":表示選擇根節(jié)點
- "http://":表示選擇任意位置的某個節(jié)點
- "@": 表示選擇某個屬性

三、選擇節(jié)點的實例

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
  <book>
    <title lang="eng">Harry Potter</title>
    <price>29.99</price>
  </book>
  <book>
    <title lang="eng">Learning XML</title>
    <price>39.95</price>
  </book>
</bookstore>

[例1]
bookstore :
選取 bookstore 元素的所有子節(jié)點。

[例2]
/bookstore :
選取根節(jié)點bookstore,這是絕對路徑寫法。

[例3]
bookstore/book :
選取所有屬于 bookstore 的子元素的 book元素,這是相對路徑寫法。

[例4]
//book :
選擇所有 book 子元素,而不管它們在文檔中的位置。

[例5]
bookstore//book :
選擇所有屬于 bookstore 元素的后代的 book 元素,而不管它們位于 bookstore 之下的什么位置。

[例6]
//@lang :
選取所有名為 lang 的屬性。

四、xpath的謂語條件(Predicate)

所謂"謂語條件",就是對路徑表達式的附加條件。
所有的條件,都寫在方括號"[]"中,表示對節(jié)點進行進一步的篩選。

[例7]
/bookstore/book[1] :
表示選擇bookstore的第一個book子元素。

[例8]
/bookstore/book[last()] :
表示選擇bookstore的最后一個book子元素。

[例9]
/bookstore/book[last()-1] :
表示選擇bookstore的倒數(shù)第二個book子元素。

[例10]
/bookstore/book[position()<3] :
表示選擇bookstore的前兩個book子元素。

[例11]
//title[@lang] :
表示選擇所有具有l(wèi)ang屬性的title節(jié)點。

[例12]
//title[@lang='eng'] :
表示選擇所有l(wèi)ang屬性的值等于"eng"的title節(jié)點。

[例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子元素。

五、通配符

"*"表示匹配任何元素節(jié)點。
"@*"表示匹配任何屬性值。
node()表示匹配任何類型的節(jié)點。

[例17]
//
*選擇文檔中的所有元素節(jié)點。

[例18]
/
/
:**表示選擇所有第二層的元素節(jié)點。

[例19]
/bookstore/
*表示選擇bookstore的所有元素子節(jié)點。

[例20]
//title[@
] :
*表示選擇所有帶有屬性的title元素。

六、選擇多個路徑

用"|"選擇多個并列的路徑。

[例21]
//book/title | //book/price :
表示同時選擇book元素的title子元素和price子元素。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容