XPath語法
XPath語法


XPath使用路徑表達式定位XML文檔內的節點。
XML示例文檔
我們將使用如下的簡單XML文檔描述XPath語法:
<?xml version="1.0" encoding="ISO-8859-1"?> <catalog> <cd country="USA"> <title>Empire Burlesque</title> <artist>Bob Dylan</artist> <price>10.90</price> </cd> <cd country="UK"> <title>Hide your heart</title> <artist>Bonnie Tyler</artist> <price>9.90</price> </cd> <cd country="USA"> <title>Greatest Hits</title> <artist>Dolly Parton</artist> <price>9.90</price> </cd> </catalog> |
定位節點
XML文檔可以看作是一個節點樹(非常類似于計算機的樹形文件夾)。
XPath使用模式表達式識別XML文檔里的節點。一個XPath模式是一個以斜線分隔的子元素名列表,用于描述XML文檔的一個路徑。模式選擇匹配該路徑的元素。
下面的XPath表達式選擇catalog元素的所有cd元素的所有price元素:
/catalog/cd/price |
注意: 如果路徑以一個斜線(/)開始,代表相對于一個元素的絕對路徑!
注意: 如果路徑以兩個斜線開始,表示選擇文檔中所有符合該條件的元素(即使它們在不同的XML樹的級別)!
下面的XPath表達式選擇文檔中所有的cd元素:
//cd |
選擇未知元素
通配符(*)用來選擇未知XML元素。
下面的XPath表達式選擇catalog元素下所有cd元素的所有子元素:
/catalog/cd/* |
下面的XPath表達式選擇catalog元素的孫子元素下所有的price元素:
/catalog/*/price |
下面的XPath表達式選擇有兩個祖先的所有price元素:
/*/*/price |
下面的XPath表達式選擇文檔中所有元素:
//* |
選擇分支
通過在XPath表達式中使用方括號可以進一步地指定一個元素。
下面的XPath表達式選擇catalog元素的第一個cd子元素:
/catalog/cd[1] |
下面的XPath表達式選擇catalog元素的最后一個子元素(注意:沒有first()函數):
/catalog/cd[last()] |
下面的XPath表達式選擇catalog元素下含有price子元素的所有cd元素:
/catalog/cd[price] |
下面的XPath表達式選擇catalog元素下子元素price值等于10.90的所有cd元素:
/catalog/cd[price=10.90] |
下面的XPath表達式選擇catalog元素下price元素值等于10.90的所有cd元素的price元素:
/catalog/cd[price=10.90]/price |
選擇多個路徑
通過在XPath表達式中使用|操作符,可以選擇多個路徑。
下面的XPath表達式選擇catalog元素的子元素cd元素下所有的title和artist元素:
/catalog/cd/title | /catalog/cd/artist |
下面的XPath表達式選擇文檔中所有title元素和artist元素:
//title | //artist |
下面的XPath表達式選擇文檔中所有title、artist、price元素:
//title | //artist | //price |
下面的XPath表達式選擇catalog元素的cd子元素下所有的title元素,以及文檔中所有的artist元素:
/catalog/cd/title | //artist |
選擇屬性
在XPath中,所有屬性以前綴@指定。
下面的XPath表達式選擇所有名為country的屬性:
//@country |
下面的XPath表達式選擇所有含有country屬性的cd元素:
//cd[@country] |
下面的XPath表達式選擇選擇所有含有任何屬性的cd元素:
//cd[@*] |
下面的XPath表達式選擇屬性country等于UK的所有cd元素:
//cd[@country='UK'] |
http://61.139.52.111:8090/kj/Manfeel/oltl/session1/session1-p02.htm