XPath(XML Path Language)是一種查詢語言,用於從 XML 文件中選取節點和值。在 Apidog 中,XPath 用於從 XML API 回應中擷取資料、驗證 XML 結構,並為以 XML 為基礎的 API 建立斷言。你可以使用 XPath 透過沿著文件階層中的路徑或一系列步驟,來選取 XML 文件中的節點或節點集合。XML 範例#
<?xml version="1.0" encoding="UTF-8"?>
<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>
節點選取#
XPath 允許你透過沿著路徑或步驟,選取 XML 文件中的節點或節點集合。以下是一些最常見的路徑運算式:| 運算式 | 說明 |
|---|
nodename | 選取此節點的所有子節點 |
/ | 從根節點選取 |
// | 從目前節點開始,選取文件中符合選取條件的節點,不論其位置為何 |
. | 選取目前節點 |
.. | 選取目前節點的父節點 |
@ | 選取屬性 |
路徑運算式範例#
| 路徑運算式 | 結果 |
|---|
bookstore | 選取 bookstore 元素的所有子元素 |
/bookstore | 選取根元素 bookstore。如果路徑以正斜線( / )開頭,則此路徑一律表示某個元素的絕對路徑 |
bookstore/book | 選取 bookstore 的子元素中所有 book 元素 |
//book | 選取文件中所有 book 元素,不論其位置為何 |
bookstore//book | 選取 bookstore 元素底下的所有 book 元素,不論它們位於 bookstore 底下的何處 |
//@lang | 選取所有名為 lang 的屬性 |
以 / 開頭的路徑是絕對路徑(從根開始),而不含 / 的路徑則相對於目前節點。
你可以使用謂詞來尋找特定節點,或包含指定值的節點。謂詞會以方括號括住,並可進行強大的篩選。謂詞範例#
| 路徑運算式 | 結果 |
|---|
/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'] | 選取所有具有 lang 屬性且其值為 eng 的 title 元素 |
/bookstore/book[price>35.00] | 選取 bookstore 中 price 元素的值大於 35.00 的所有 book 元素 |
/bookstore/book[price>35.00]//title | 選取 bookstore 中 price 元素大於 35.00 的 book 元素底下所有 title 元素 |
XPath 的謂詞使用從 1 開始的索引,與使用從 0 開始索引的 JSONPath 不同。第一個元素是 [1],不是 [0]。
選取未知節點#
XPath 萬用字元可用於選取未知的 XML 元素,而不需要知道其確切名稱。