XPath 簡單語法

2021-05-23 05:53:52 字數 2710 閱讀 5178

xpath 是xml的查詢語言,和sql的角色很類似。以下面xml為例,介紹xpath 的語法。

<?xml version="1.0" encoding="iso-8859-1"?>
empire burlesque

bob dylan

10.90

hide your heart

bonnie tyler

9.90

greatest hits

dolly parton

9.90

定位節點

xml是樹狀結構,類似檔案系統內資料夾的結構,xpath也類似檔案系統的路徑命名方式。不過xpath 是一種模式(pattern),可以選出xml檔案中,路徑符合某個模式的所有節點出來。例如要選catalog底下的cd中所有price元素可以用:

/catalog/cd/price
如果xpath的開頭是乙個斜線(/)代表這是絕對路徑。如果開頭是兩個斜線(//)表示檔案中所有符合模式的元素都會被選出來,即使是處於樹中不同的層級也會被選出來。以下的語法會選出檔案中所有叫做cd的元素(在樹中的任何層級都會被選出來): 

//cd
選擇未知的元素

使用星號(wildcards,*)可以選擇未知的元素。下面這個語法會選出/catalog/cd 的所有子元素:

/catalog/cd/*
以下的語法會選出所有catalog的子元素中,包含有price作為子元素的元素。

/catalog/*/price
以下的語法會選出有兩層父節點,叫做price的所有元素。

/*/*/price
以下的語法會選擇出檔案中的所有元素。 

//*
要注意的是,想要訪問不分層級的元素,xpath語法必須以兩個斜線開頭(//),想要訪問未知元素才用星號(*),星號只能代表未知名稱的元素,不能代表未知層級的元素。

選擇分支

使用中括號可以選擇分支。以下的語法從catalog的子元素中取出第乙個叫做cd的元素。xpath的定義中沒有第0元素這種東西。

/catalog/cd[1]
以下語法選擇catalog中的最後乙個cd元素:(xpathj並沒有定義first() 這種函式喔,用上例的[1]就可以取出第乙個元素。 

/catalog/cd[last()]
以下語法選出含有price子元素的所有/catalog/cd元素。 

/catalog/cd[price]
以下語法選出price元素的值等於10.90的所有/catalog/cd元素 

/catalog/cd[price=10.90]
以下語法選出price元素的值等於10.90的所有/catalog/cd元素 的price元素 

/catalog/cd[price=10.90]/price
選擇乙個以上的路徑

使用or運算元(|)就可以選擇乙個以上的路徑。例如:

/catalog/cd/title | catalog/cd/artist
選擇所有title以及artist元素

//title | //artist
選擇所有title以及artist以及price元素

//title | //artist | //price
選擇屬性

在xpath中,除了選擇元素以外,也可以選擇屬性。屬性都是以@開頭。例如選擇檔案中所有叫做country的屬性:

//@country
選擇所有含有country這個屬性的cd元素:

//cd[@country]
以下語法選擇出含有屬性的所有cd元素

//cd[@*]
以下語法選擇出country屬性值為uk的cd元素

XPath 簡單語法

xpath 是xml的查詢語言,和sql的角色很類似。以下面xml為例,介紹xpath 的語法。empire burlesque bob dylan 10.90 hide your heart bonnie tyler 9.90 greatest hits dolly parton 9.90 定位節...

XPath 簡單語法

xpath 是xml的查詢語言,和sql的角色很類似。以下面xml為例,介紹xpath 的語法。empire burlesque bob dylan 10.90 hide your heart bonnie tyler 9.90 greatest hits dolly parton 9.90 定位節...

XPath 簡單語法

xpath 是xml的查詢語言,和sql的角色很類似。以下面xml為例,介紹xpath 的語法。empire burlesque bob dylan 10.90 hide your heart bonnie tyler 9.90 greatest hits dolly parton 9.90 定位節...