xpath 使用路徑表示式來選取 xml 文件中的節點或者節點集。這些路徑表示式和我們在常規的電腦檔案系統中看到的表示式非常相似。
在 xpath 中,有七種型別的節點:元素、屬性、文字、命名空間、處理指令、注釋以及文件節點(或稱為根節點)。
xml 文件是被作為節點樹來對待的。樹的根被稱為文件節點或者根節點。
例如:請看下面這個 xml 文件:
<?xml version="1.0" encoding="iso-8859-1"?>harry potter
j k. rowling
2005
29.99
上面的xml文件中的節點例子:
(文件節點)基本值是無父或無子的節點。j k. rowling (元素節點)
lang="en" (屬性節點)
基本值的例子:
j k. rowling專案是基本值或者節點。"en"
每個元素以及屬性都有乙個父。
在下面的例子中,book 元素是 title、author、year 以及 price 元素的父:
harry potter元素節點可有零個、乙個或多個子。j k. rowling
2005
29.99
在下面的例子中,title、author、year 以及 price 元素都是 book 元素的子:
harry potter擁有相同的父的節點j k. rowling
2005
29.99
在下面的例子中,title、author、year 以及 price 元素都是同胞:
harry potter某節點的父、父的父,等等。j k. rowling
2005
29.99
在下面的例子中,title 元素的先輩是 book 元素和 bookstore 元素:
harry potter某個節點的子,子的子,等等。j k. rowling
2005
29.99
在下面的例子中,bookstore 的後代是 book、title、author、year 以及 price 元素:
harry potterj k. rowling
2005
29.99
xpath 使用路徑表示式來選取 xml 文件中的節點或節點集。節點是通過沿著路徑 (path) 或者步 (steps) 來選取的。
我們將在下面的例子中使用這個 xml 文件。
<?xml version="1.0" encoding="iso-8859-1"?>harry potter
29.99
learning xml
39.95
xpath 使用路徑表示式在 xml 文件中選取節點。節點是通過沿著路徑或者 step 來選取的。
表示式描述
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']
選取所有 title 元素,且這些元素擁有值為 eng 的 lang 屬性。
/bookstore/book[price>35.00]
選取 bookstore 元素的所有 book 元素,且其中的 price 元素的值須大於 35.00。
/bookstore/book[price>35.00]/title
選取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值須大於 35.00。
xpath 萬用字元可用來選取未知的 xml 元素。
萬用字元描述
*匹配任何元素節點。
@*匹配任何屬性節點。
node()
匹配任何型別的節點。
在下面的**中,我們列出了一些路徑表示式,以及這些表示式的結果:
路徑表示式
結果/bookstore/*
選取 bookstore 元素的所有子元素。
//*選取文件中的所有元素。
//title[@*]
選取所有帶有屬性的 title 元素。
通過在路徑表示式中使用「|」運算子,您可以選取若干個路徑。
在下面的**中,我們列出了一些路徑表示式,以及這些表示式的結果:
路徑表示式
結果//book/title | //book/price
選取 book 元素的所有 title 和 price 元素。
//title | //price
選取文件中的所有 title 和 price 元素。
/bookstore/book/title | //price
選取屬於 bookstore 元素的 book 元素的所有 title 元素,以及文件中所有的 price 元素。
XPath 語法總結
xpath 是一門在 xml 文件中查詢資訊的語言。xpath 可用來在 xml 文件中對元素和屬性進行遍歷。xpath 是 w3c xslt 標準的主要元素,並且 xquery 和 xpointer 都構建於 xpath 表達之上。因此,對 xpath 的理解是很多高階 xml 應用的基礎。xpa...
爬蟲基礎 XPath語法總結
xpath xml path language 是一門在 xml 文件中查詢資訊的語言,可用來在 xml 文件中對元素和屬性進行遍歷。w3school官方文件 開源的xpath表示式編輯工具 xmlquire xml格式檔案可用 chrome外掛程式 xpath helper firefox外掛程式...
XPATH語法總結與示例
路徑表示式 含義title 選取當前節點下所有title子節點 book 從根節點找子節點是book的,找不到 book title 當前節點下所有子節點book下的title節點 title 從根節點向下找任意層中title的結點 book title 當前節點下所有book子節點下任意層次的ti...