XPath路徑表達式

一、術語:

  節點(Node):7種類型:元素,屬性,文本,命名空間,處理命令,註釋,文檔(根)節點node

​二、節點關係:

  父(Parent),子(Children),同胞(Sibling),先輩(Ancestor),後代(Descendant)測試

三、路徑表達式

  nodename  節點名,選取此節點的全部子節點  例: childnode  當前節點中的childnode子節點,不包含孫子及如下的節點spa

  /     從根節點選取  例:/root/childnode/grandsonnode文檔

  //     表示全部後代節點  例://childnode    全部名爲childnode的後代節點it

  .    表示當前節點  例:  ./childnode    表示當前節點的childnode節點io

  ..     表示父節點  例:  ../nearnode     表示父親節點的nearnode子節點ast

  @    選取屬性  /root/childnode/@id     表示childnode的全部含有id屬性的節點集class

四、謂語(Predicates)

  謂語能夠對節點集進行一些限制,使選擇更精確命名空間

  /root/book[1]    節點集中的第一個節點命名

  /root/book[last()]  節點集中最後一個節點

  /root/book[position() - 1]  節點集中倒數第二個節點集

  /root/book[position() < 5]  節點集中前五個節點集

  /root/book[@id]      節點集中含有屬性id的節點集

  /root/book[@id='chinese']  節點集中id屬性值爲chinese的節點集

  /root/book[price > 35]/title  節點集中book的price元素值大於35的title節點集

五、通配符:

  XPath路徑中一樣支持通配符(*,@*,node(), text())

  例:  /bookstore/*

  //title[@*]

六、XPath軸

  定義相對於當前節點的節點集

  ancestor    全部祖先節點

  attribute    全部屬性節點

  child      全部子元素

  descendant  全部後代節點(子,孫。。。)

  following    結束標記後的全部節點      preceding   開始標記前的全部節點

  following-sibling  結束標記後的全部同胞節點

  preceding-sibling  開始標記前的全部同胞節點

  namespace   當前命名空間的全部節點

  parent     父節點

  self       當前節點

  用法:軸名稱::節點測試[謂語]

  例:  ancestor::book

  child::text()

七、運算符

  |  兩個節點集的合併  例:/root/book[1] | /root/book[3]

  +,-,*,dev,mod

  =,!=,<,>,<=,>=

  or,and  或和與

  多個屬性條件查詢      //div[@align='center' and @height='24']

  不存在class屬性       //div[not(@class)]

相關文章
相關標籤/搜索