xpath簡介
簡單說,xpath就是選擇XML文件中節(jié)點(diǎn)的方法。
所謂節(jié)點(diǎn)(node),就是XML文件的最小構(gòu)成單位,一共分成7種。
- element(元素節(jié)點(diǎn))
- attribute(屬性節(jié)點(diǎn))
- text (文本節(jié)點(diǎn))
- namespace (名稱空間節(jié)點(diǎn))
- processing-instruction (處理命令節(jié)點(diǎn))
- comment (注釋節(jié)點(diǎn))
- root (根節(jié)點(diǎn))
xpath可以用來選擇這7種節(jié)點(diǎn)。不過,下面的筆記只涉及最常用的第一種element(元素節(jié)點(diǎn)),因此可以將下文中的節(jié)點(diǎn)和元素視為同義詞。
一、xpath表達(dá)式的基本格式
xpath通過"路徑表達(dá)式"(Path Expression)來選擇節(jié)點(diǎn)。在形式上,"路徑表達(dá)式"與傳統(tǒng)的文件系統(tǒng)非常類似。
# 斜杠(/)作為路徑內(nèi)部的分割符。
# 同一個(gè)節(jié)點(diǎn)有絕對(duì)路徑和相對(duì)路徑兩種寫法。
# 絕對(duì)路徑(absolute path)必須用"/"起首,后面緊跟根節(jié)點(diǎn),比如/step/step/...。
# 相對(duì)路徑(relative path)則是除了絕對(duì)路徑以外的其他寫法,比如 step/step,也就是不使用"/"起首。
# "."表示當(dāng)前節(jié)點(diǎn)。
# ".."表示當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)
二、選擇節(jié)點(diǎn)的基本規(guī)則
- nodename(節(jié)點(diǎn)名稱):表示選擇該節(jié)點(diǎn)的所有子節(jié)點(diǎn)
- "/":表示選擇根節(jié)點(diǎn)
- "http://":表示選擇任意位置的某個(gè)節(jié)點(diǎn)
- "@": 表示選擇某個(gè)屬性
三、選擇節(jié)點(diǎn)的實(shí)例
先看一個(gè)XML實(shí)例文檔。
<?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é)點(diǎn)。
[例2]
/bookstore :選取根節(jié)點(diǎn)bookstore,這是絕對(duì)路徑寫法。
[例3]
bookstore/book :選取所有屬于 bookstore 的子元素的 book元素,這是相對(duì)路徑寫法。
[例4]
//book :選擇所有 book 子元素,而不管它們?cè)谖臋n中的位置。
[例5]
bookstore//book :選擇所有屬于 bookstore 元素的后代的 book 元素,而不管它們位于 bookstore 之下的什么位置。
[例6]
//@lang :選取所有名為 lang 的屬性。
四、xpath的謂語條件(Predicate)
所謂"謂語條件",就是對(duì)路徑表達(dá)式的附加條件。
所有的條件,都寫在方括號(hào)"[]"中,表示對(duì)節(jié)點(diǎn)進(jìn)行進(jìn)一步的篩選。
[例7]
/bookstore/book[1] :表示選擇bookstore的第一個(gè)book子元素。
[例8]
/bookstore/book[last()] :表示選擇bookstore的最后一個(gè)book子元素。
[例9]
/bookstore/book[last()-1] :表示選擇bookstore的倒數(shù)第二個(gè)book子元素。
[例10]
/bookstore/book[position()<3] :表示選擇bookstore的前兩個(gè)book子元素。
[例11]
//title[@lang] :表示選擇所有具有l(wèi)ang屬性的title節(jié)點(diǎn)。
[例12]
//title[@lang='eng'] :表示選擇所有l(wèi)ang屬性的值等于"eng"的title節(jié)點(diǎn)。
[例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結(jié)果集中,選擇title子元素。
[例16]
/bookstore/book/price[.>35.00] :表示選擇值大于35的"/bookstore/book"的price子元素。
五、通配符
# "*"表示匹配任何元素節(jié)點(diǎn)。
# "@*"表示匹配任何屬性值。
# node()表示匹配任何類型的節(jié)點(diǎn)。
[例17]
//* :選擇文檔中的所有元素節(jié)點(diǎn)。
[例18]
/*/* :表示選擇所有第二層的元素節(jié)點(diǎn)。
[例19]
/bookstore/* :表示選擇bookstore的所有元素子節(jié)點(diǎn)。
[例20]
//title[@*] :表示選擇所有帶有屬性的title元素。
六、選擇多個(gè)路徑
用"|"選擇多個(gè)并列的路徑。
[例21]
//book/title | //book/price :表示同時(shí)選擇book元素的title子元素和price子元素。
您可能感興趣的文章
- 01-11XPath入門 - XSL教程 - 3
- 01-11SixSix翻譯的XAML教程 語法簡介
- 01-11Xml簡介
- 01-11Xpath語法格式總結(jié)


閱讀排行
本欄相關(guān)
- 01-11關(guān)于XSL - XSL教程
- 01-11WMLScript的語法基礎(chǔ)
- 01-11選擇模式 - XSL教程 - 2
- 01-11WML學(xué)習(xí)之五 顯示表單
- 01-11WML學(xué)習(xí)之三 顯示文本
- 01-11匹配模式 - XSL教程 - 4
- 01-11WML語法大全與相關(guān)介紹第1/3頁
- 01-11XPath入門 - XSL教程 - 3
- 01-11測試模式 - XSL教程 - 5
- 01-11WAP建站W(wǎng)ML語言語法基礎(chǔ)教程第1/6頁
隨機(jī)閱讀
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-10delphi制作wav文件的方法
- 01-10C#中split用法實(shí)例總結(jié)
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 04-02jquery與jsp,用jquery
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改