xpath路徑表示式筆記

2021-06-05 14:16:40 字數 2846 閱讀 8546

日期: 2023年7月 6日

簡單說,xpath就是選擇xml檔案中節點的方法。

所謂節點(node),就是xml檔案的最小構成單位,一共分成7種。

- element(元素節點)

- attribute(屬性節點)

- text (文字節點)

- namespace (命名空間節點)

- processing-instruction (處理命令節點)

- comment (注釋節點)

- root (根節點)

xpath可以用來選擇這7種節點。不過,下面的筆記只涉及最常用的第一種element(元素節點),因此可以將下文中的節點和元素視為同義詞。

一、xpath表示式的基本格式

xpath通過「路徑表示式」(path expression)來選擇節點。在形式上,「路徑表示式」與傳統的檔案系統非常類似。

# 斜槓(/)作為路徑內部的分割符。

# 同乙個節點有絕對路徑和相對路徑兩種寫法。

# 絕對路徑(absolute path)必須用「/」起首,後面緊跟根節點,比如/step/step/...。

# 相對路徑(relative path)則是除了絕對路徑以外的其他寫法,比如 step/step,也就是不使用「/」起首。

# 「.」表示當前節點。

# 「..」表示當前節點的父節點

二、選擇節點的基本規則
- nodename(節點名稱):表示選擇該節點的所有子節點

- 「/」:表示選擇根節點

- 「//」:表示選擇任意位置的某個節點

- 「@」: 表示選擇某個屬性

三、選擇節點的例項

先看乙個xml例項文件。

<?xml version="1.0" encoding="iso-8859-1"?>

harry potter

29.99

learning xml

39.95

[例1]

bookstore :選取 bookstore 元素的所有子節點。

[例2]

/bookstore :選取根節點bookstore,這是絕對路徑寫法。

[例3]

bookstore/book :選取所有屬於 bookstore 的子元素的 book元素,這是相對路徑寫法。

[例4]

//book :選擇所有 book 子元素,而不管它們在文件中的位置。

[例5]

bookstore//book :選擇所有屬於 bookstore 元素的後代的 book 元素,而不管它們位於 bookstore 之下的什麼位置。

[例6]

//@lang :選取所有名為 lang 的屬性。

四、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子元素。

五、萬用字元

# 「*」表示匹配任何元素節點。

# 「@*」表示匹配任何屬性值。

# node()表示匹配任何型別的節點。

[例17]

//* :選擇文件中的所有元素節點。

[例18]

/*/* :表示選擇所有第二層的元素節點。

[例19]

/bookstore/* :表示選擇bookstore的所有元素子節點。

[例20]

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

六、選擇多個路徑

用「|」選擇多個並列的路徑。

[例21]

//book/title | //book/price :表示同時選擇book元素的title子元素和price子元素

xpath路徑表示式筆記

xpath路徑表示式筆記 簡單說,xpath就是選擇xml檔案中節點的方法。所謂節點 node 就是xml檔案的最小構成單位,一共分成7種。element 元素節點 attribute 屬性節點 text 文字節點 namespace 命名空間節點 processing instruction 處理...

xpath路徑表示式筆記

簡單說,xpath就是選擇xml檔案中節點的方法。所謂節點 node 就是xml檔案的最小構成單位,一共分成7種。element 元素節點 attribute 屬性節點 text 文字節點 namespace 命名空間節點 processing instruction 處理命令節點 comment ...

Xpath路徑表示式

簡單說,xpath就是選擇xml檔案中節點的方法。所謂節點 node 就是xml檔案的最小構成單位,一共分成7種。element 元素節點 attribute 屬性節點 text 文字節點 namespace 命名空間節點 processing instruction 處理命令節點 comment ...