1. 程式人生 > >xpath元素定位語法

xpath元素定位語法

一起 price enc tro del pre strong -1 ebo

舉個栗子

--------------------------------------------------------------------------------------

<?xml version="1.0" encoding="ISO-8859-1"?>

<bookstore>
<store1>
<book> <title lang="eng">Harry Potter1</title> <price>10</price> </book> </store1>
    <shool>    
<store1>
<book>
              <title></title>
              <title id="2"></title>
<title lang="eng">
Harry Potter2
</title>

<title lang="cn">哈利波特2</title>
<price>20</price>
</book> </store1>
</school>
    <book>
      <title lang="eng">Harry Potter3</title>
      <price>30</price>
    </book>
    <book>
      <title lang="eng">Harry Potter4</title>
      <price>40</price>
    </book>
</bookstore>
-------------------------------------------------------------------------------------------

定義:

節點、屬性、內容之後的關系,例如:

<title lang="cn">哈利波特2</title>

a.title是節點(元素);

b.lang是titile節點的屬性;

c."cn"是lang的屬性值;

d.“哈利波特2”是title節點的內容;

綜上:一個節點包含了屬性和內容兩部分,屬性和內容可以同時為空。

1、單斜線“/”:如果以“/”開始,那麽該路徑表示到一個節點的絕對路徑,從根節點開始選取。 如:

選中bookstore根節點: /bookstore

選中bookstore下的book子節點: /bookstore/book

選中store1下的book子節點: /bookstore/store1/book

2、雙斜線“//”:如果以“//”開始,表示選中文檔中所有滿足“//”之後規則的節點(無論層級關系。如:

選中所有book子節點(包括bookstore,store1和school/store1下的book節點): //book

選中所有store1下的book子節點(包括store1和school/store1下的book節點): //store1/book

3、星號“*”:表示選擇所有“*”之前的路徑所定位的所有節點。如:

選中bookstore下所有子節點:/bookstore/*

選中文檔中所有節點: //*

4、@:使用前綴@來指定節點的屬性。如:

選中所有取名為lang的屬性://@lang

5、方括號"[]":進一步限定節點,用來查找某個特定的節點或者包含某個指定的值的節點。如:

選中storebook下第二個book節點: /storebook/book[2] 或者 /storebook/book[last()]

選中storebook下前兩個book節點: /storebook/book[position()<3]

選中有id屬性的title節點://title[@id]

選中屬性不為空的title節點: //title[@*]

選中屬性為空的title節點: //title[not(@*)]

6、屬性值作為節點的篩選條件。如:

選中屬性值:id為2的title節點://title[@id=‘2‘]

選中屬性值:lang為cn的title節點: //title[@lang=‘cn‘]

7、分隔符“|”:將多個路徑合並在一起(可以合並的路徑數目沒有限制)。如:

選擇所有的title節點和price節點://title|//price

參考文獻:http://www.w3school.com.cn/xpath/xpath_syntax.asp

xpath元素定位語法