XPath 是一門在 XML 文檔中尋找資訊的語言。XPath 可用來在 XML 文檔中對元素和屬性進行遍曆。
XPath 是 W3C XSLT 標準的主要元素,並且 XQuery 和 XPointer 同時被構建於 XPath 表達之上。
推薦一個挺不錯的網站:http://www.zvon.org/xxl/XPathTutorial/General_chi/examples.html 裡面有很不錯的例子,下面的例子中紅色字型表示使用對 應文法擷取的元素(或屬性)。
XPath軸(XPath Axes)可定義某個相對於當前節點的節點集:
1、child 選取當前節點的所有子項目
2、parent 選取當前節點的父節點
3、descendant 選取當前節點的所有後代元素(子、孫等)
4、ancestor 選取當前節點的所有先輩(父、祖父等)
5、descendant-or-self 選取當前節點的所有後代元素(子、孫等)以及當前節點本身
6、ancestor-or-self 選取當前節點的所有先輩(父、祖父等)以及當前節點本身
7、preceding-sibling 選取當前節點之前的所有同級節點
8、following-sibling 選取當前節點之後的所有同級節點
9、preceding 選取文檔中當前節點的開始標籤之前的所有節點
10、following 選取文檔中當前節點的結束標籤之後的所有節點
11、self 選取當前節點
12、attribute 選取當前節點的所有屬性
13、namespace 選取當前節點的所有命名空間節點
attribute軸選取當前節點的所有屬性,擷取的結果是屬性而不是節點,全面所有的軸都是選取節點。
/AAA/BBB/attribute::* 選取/AAA/BBB節點的所有屬性
<AAA>
<BBB aaa = "111" bbb = "222">
<CCC/>
<CCC xxx = "555" yyy = "666" zzz = "777"/>
</BBB>
<BBB aaa = "999">
<CCC xxx = "qq"/>
<DDD xxx = "ww"/>
<EEE xxx = "oo"/>
</BBB>
<BBB>
<DDD xxx = "oo"/>
</BBB>
</AAA>
//CCC/attribute::* 選取所有CCC節點的所有屬性
<AAA>
<BBB aaa = "111" bbb = "222">
<CCC/>
<CCC xxx = "555" yyy = "666" zzz = "777"/>
</BBB>
<BBB aaa = "999">
<CCC xxx = "qq"/>
<DDD xxx = "ww"/>
<EEE xxx = "oo"/>
</BBB>
<BBB>
<DDD xxx = "oo"/>
</BBB>
</AAA>