XPath即爲XML路徑語言,它是一種用來肯定XML(標準通用標記語言的子集)文檔中某部分位置的語言。XPath基於XML的樹狀結構,提供在數據結構樹中找尋節點的能力。起初 XPath 的提出的初衷是將其做爲一個通用的、介於XPointer與XSLT間的語法模型。可是 XPath 很快的被開發者採用來看成小型查詢語言。node
簡單說,xpath就是: 選擇XML文件中節點的方法。markdown
所謂節點(node),就是XML文件的最小構成單位,一共分紅7種。數據結構
- attribute(屬性節點)spa
text (文本節點)code
namespace (名稱空間節點)xml
processing-instruction (處理命令節點)element
comment (註釋節點)開發
root (根節點)文檔
xpath經過」路徑表達式」(Path Expression)來選擇節點。在形式上,」路徑表達式」與傳統的文件系統很是相似.it
斜槓(/)做爲路徑內部的分割符。
同一個節點有絕對路徑和相對路徑兩種寫法。
絕對路徑(absolute path)必須用」/」起首,後面緊跟根節點,好比/step/step/…。
相對路徑(relative path)則是除了絕對路徑之外的其餘寫法,好比 step/step,也就是不使用」/」起首。
「.」表示當前節點。
「..」表示當前節點的父節點
nodename(節點名稱):表示選擇該節點的全部子節點
「/」:表示選擇根節點
「//」:表示選擇任意位置的某個節點
「@」: 表示選擇某個屬性
<?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>
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]
:表示選擇bookstore的book子元素,且被選中的book元素必須帶有price子元素。
/bookstore/book[price>35.00]
:表示選擇bookstore的book子元素,且被選中的book元素的price子元素值必須大於35。
/bookstore/book[price>35.00]/title
:表示在例14結果集中,選擇title子元素。
/bookstore/book/price[.>35.00]
:表示選擇值大於35的」/bookstore/book」的price子元素。
「*」表示匹配任何元素節點。
「@*」表示匹配任何屬性值。
node()表示匹配任何類型的節點
//*
:選擇文檔中的全部元素節點。
/*/*
:表示選擇全部第二層的元素節點。
/bookstore/*
:表示選擇bookstore的全部元素子節點。
//title[@*]
:表示選擇全部帶有屬性的title元素。
用」|」選擇多個並列的路徑。
//book/title | //book/price
:表示同時選擇book元素的title子元素和price子元素。