XPath路徑表達式


1、術語:

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

​2、節點關系:

  父(Parent),子(Children),同胞(Sibling),先輩(Ancestor),后代(Descendant)

3、路徑表達式

  nodename  節點名,選取此節點的所有子節點  例: childnode  當前節點中的childnode子節點,不包含孫子及以下的節點

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

  //     表示所有后代節點  例://childnode    所有名為childnode的后代節點

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

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

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

4、謂語(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節點集

5、通配符:

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

  例:  /bookstore/*

  //title[@*]

6、XPath軸

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

  ancestor    所有祖先節點

  attribute    所有屬性節點

  child      所有子元素

  descendant  所有后代節點(子,孫。。。)

  following    結束標記后的所有節點      preceding   開始標記前的所有節點

  following-sibling  結束標記后的所有同胞節點

  preceding-sibling  開始標記前的所有同胞節點

  namespace   當前命名空間的所有節點

  parent     父節點

  self       當前節點

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

  例:  ancestor::book

  child::text()

7、運算符

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

  +,-,*,dev,mod

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

  or,and  或和與

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

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

7、方法

//選擇不包含class屬性的節點
var result = node.SelectNodes(".//span[not(@class)]");
//選擇不包含class和id屬性的節點
var result = node.SelectNodes(".//span[not(@class) and not(@id)]");
//選擇不包含class="expire"的span
var result = node.SelectNodes(".//span[not(contains(@class,'expire'))]");
//選擇包含class="expire"的span
var result = node.SelectNodes(".//span[contains(@class,'expire')]");


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM