XPath 是一門在 XML 文檔中查找信息的語言。XPath 可用來在 XML 文檔中對元素和屬性進行遍歷。
XPath 是 W3C XSLT 標準的主要元素,並且 XQuery 和 XPointer 同時被構建於 XPath 表達之上。
推薦一個挺不錯的網站:http://www.zvon.org/xxl/XPathTutorial/General_chi/examples.html 裏面有很不錯的例子,下面的例子中紅色字體表示使用對應語法獲取的元素(或屬性)。
1、斜線/從根節點選擇,基本的XPath語法類似於在一個文件系統中定位文件,如果路徑以斜線 / 開始, 那麼該路徑就表示到一個元素的絕對路徑,獲取滿足該路徑的所有節點:
選擇根元素 語法:/AAA
<AAA><BBB/>
<CCC/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC>
<DDD>
<BBB/>
<BBB/>
</DDD>
</CCC>
</AAA>
選擇AAA的所有CCC子元素 語法:/AAA/CCC
<AAA>
<BBB/>
<CCC/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC>
<DDD>
<BBB/>
<BBB/>
</DDD>
</CCC>
</AAA>
2、如果路徑以雙斜線 // 開頭, 則表示選擇文檔中所有滿足雙斜線//之後規則的元素(無論層級關係),//會做全文檔掃描。
選擇所有BBB元素 語法://BBB
<AAA><BBB/>
<CCC/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC>
<DDD>
<BBB/>
<BBB/>
</DDD>
</CCC>
</AAA>
選擇所有父元素是DDD的BBB元素 語法://DDD/BBB
<AAA><BBB/>
<CCC/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC>
<DDD>
<BBB/>
<BBB/>
</DDD>
</CCC>
</AAA>
選擇AAA的CCC的所有BBB元素 語法:/AAA/CCC//BBB
<AAA>
<BBB/>
<CCC/>
<BBB/>
<DDD>
<BBB/>
</DDD>
<CCC>
<DDD>
<BBB/>
<BBB/>
</DDD>
</CCC>
</AAA>
3、點“.” 選取當前節點。
4、“..”選取當前節點的父節點。
5、”@”選取屬性。
選擇所有的id屬性 語法://@id 注意:這裏選取的是屬性而不是方法。
<AAA><BBB id = "b1"/>
<BBB id = "b2"/>
<BBB name = "bbb"/>
<BBB/>
</AAA>
選擇有id屬性的BBB元素 語法://BBB[@id] 區別於上面的屬性選擇
<AAA>
<BBB id = "b1"/>
<BBB id = "b2"/>
<BBB name = "bbb"/>
<BBB/>
</AAA>
選擇id屬性爲“id1”的BBB元素 語法://BBB[@id="b1"]
<AAA>
<BBB id = "b1"/>
<BBB id = "b2"/>
<BBB name = "bbb"/>
<BBB/>
</AAA>
選擇有任意屬性的BBB元素 語法://BBB[@*]
<AAA>
<BBB id = "b1"/>
<BBB id = "b2"/>
<BBB name = "bbb"/>
<BBB/>
</AAA>
選擇不具有任何屬性的BBB元素 語法://BBB[not(@*)]
<AAA>
<BBB id = "b1"/>
<BBB id = "b2"/>
<BBB name = "bbb"/>
<BBB/>
</AAA>
本篇主要學習XPath 使用路徑表達式在 XML 文檔中選取節點。斜線”/”是從根節點選擇,雙斜線”//”從匹配選擇的當前節點選擇文檔中的節點,而不考慮它們的位置,點”.”選取當前節點,兩點”..”選取當前節點的父節點,“@”爲選取屬性。
轉載自:http://www.cnblogs.com/zhaozhan/archive/2009/09/09/1563617.html