XPath 11個實例_Xml教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:XMLHTTP資料
      XMLHTTP對象及其方法------------------MSXML中提供了Microsoft.XMLHTTP對象,能夠完成從數據包到Request對象的轉換以及發送任務。 創建XMLHTTP對象的語句如下: Set objXML

      實例 1
      基本的XPath語法類似于在一個文件系統中定位文件,如果路徑以斜線 / 開始, 那么該路徑就表示到一個元素的絕對路徑。
      /AAA
      選擇根元素AAA
      <AAA>
      <BBB/>
      <CCC/>
      <BBB/>
      <BBB/>
      <DDD>
      <BBB/>
      </DDD>
      <CCC/>
      </AAA>

      /AAA/CCC
      選擇AAA的所有CCC子元素
      <AAA>
      <BBB/>
      <CCC/>
      <BBB/>
      <BBB/>
      <DDD>
      <BBB/>
      </DDD>
      <CCC/>
      </AAA>

      /AAA/DDD/BBB
      選擇AAA的子元素DDD的所有子元素
      <AAA>
      <BBB/>
      <CCC/>
      <BBB/>
      <BBB/>
      <DDD>
      <BBB/>
      </DDD>
      <CCC/>
      </AAA>
      實例 2
      如果路徑以雙斜線 // 開頭, 則表示選擇文檔中所有滿足雙斜線//之后規則的元素(無論層級關系) //BBB
      選擇所有BBB元素
      <AAA>
      <BBB/>
      <CCC/>
      <BBB/>
      <DDD>
      <BBB/>
      </DDD>
      <CCC>
      <DDD>
      <BBB/>
      <BBB/>
      </DDD>
      </CCC>
      </AAA>

      //DDD/BBB
      選擇所有父元素是DDD的BBB元素
      <AAA>
      <BBB/>
      <CCC/>
      <BBB/>
      <DDD>
      <BBB/>
      </DDD>
      <CCC>
      <DDD>
      <BBB/>
      <BBB/>
      </DDD>
      </CCC>
      </AAA>
      實例 3
      星號 * 表示選擇所有由星號之前的路徑所定位的元素
      /AAA/CCC/DDD/*
      選擇所有路徑依附于/AAA/CCC/DDD的元素
      <AAA>
      <XXX>
      <DDD>
      <BBB/>
      <BBB/>
      <EEE/>
      <FFF/>
      </DDD>
      </XXX>
      <CCC>
      <DDD>
      <BBB/>
      <BBB/>
      <EEE/>
      <FFF/>
      </DDD>
      </CCC>
      <CCC>
      <BBB>
      <BBB>
      <BBB/>
      </BBB>
      </BBB>
      </CCC>
      </AAA>

      /*/*/*/BBB
      選擇所有的有3個祖先元素的BBB元素
      <AAA>
      <XXX>
      <DDD>
      <BBB/>
      <BBB/>
      <EEE/>
      <FFF/>
      </DDD>
      </XXX>
      <CCC>
      <DDD>
      <BBB/>
      <BBB/>
      <EEE/>
      <FFF/>
      </DDD>
      </CCC>
      <CCC>
      <BBB>
      <BBB>
      <BBB/>
      </BBB>
      </BBB>
      </CCC>
      </AAA>

      //*
      選擇所有元素
      <AAA>
      <XXX>
      <DDD>
      <BBB/>
      <BBB/>
      <EEE/>
      <FFF/>
      </DDD>
      </XXX>
      <CCC>
      <DDD>
      <BBB/>
      <BBB/>
      <EEE/>
      <FFF/>
      </DDD>
      </CCC>
      <CCC>
      <BBB>
      <BBB>
      <BBB/>
      </BBB>
      </BBB>
      </CCC>
      </AAA>
      實例 4
      方塊號里的表達式可以進一步的指定元素, 其中數字表示元素在選擇集里的位置, 而last()函數則表示選擇集中的最后一個元素.

      /AAA/BBB[1]
      選擇AAA的第一個BBB子元素
      <AAA>
      <BBB/>
      <BBB/>
      <BBB/>
      <BBB/>
      </AAA>

      /AAA/BBB[last()]

      選擇AAA的最后一個BBB子元素
      <AAA>
      <BBB/>
      <BBB/>
      <BBB/>
      <BBB/>
      </AAA>
      實例 5


      //@id
      選擇所有的id屬性
      <AAA>
      <BBB id = \"b1\"/>
      <BBB id = \"b2\"/>
      <BBB name = \"bbb\"/>
      <BBB/>
      </AAA>

      //BBB[@id]
      選擇有id屬性的BBB元素
      <AAA>
      <BBB id = \"b1\"/>
      <BBB id = \"b2\"/>
      <BBB name = \"bbb\"/>
      <BBB/>
      </AAA>

      //BBB[@name]
      選擇有name屬性的BBB元素
      <AAA>
      <BBB id = \"b1\"/>
      <BBB id = \"b2\"/>
      <BBB name = \"bbb\"/>
      <BBB/>
      </AAA>

      //BBB[@*]
      選擇有任意屬性的BBB元素
      <AAA>
      <BBB id = \"b1\"/>
      <BBB id = \"b2\"/>
      <BBB name = \"bbb\"/>
      <BBB/>
      </AAA>

      //BBB[not(@*)]
      選擇沒有屬性的BBB元素
      <AAA>
      <BBB id = \"b1\"/>
      <BBB id = \"b2\"/>
      <BBB name = \"bbb\"/>
      <BBB/>
      </AAA>
      實例 6
      屬性的值可以被用來作為選擇的準則, normalize-space函數刪除了前部和尾部的空格, 并且把連續的空格串替換為一個單一的空格

      //BBB[@id=\'b1\']
      選擇含有屬性id且其值為\'b1\'的BBB元素
      <AAA>
      <BBB id = \"b1\"/>
      <BBB name = \" bbb \"/>
      <BBB name = \"bbb\"/>
      </AAA>

      //BBB[@name=\'bbb\']
      選擇含有屬性name且其值為\'bbb\'的BBB元素
      <AAA>
      <BBB id = \"b1\"/>
      <BBB name = \" bbb \"/>
      <BBB name = \"bbb\"/>
      </AAA>

      //BBB[normalize-space(@name)=\'bbb\']
      選擇含有屬性name且其值(在用normalize-space函數去掉前后空格后)為\'bbb\'的BBB元素
      <AAA>
      <BBB id = \"b1\"/>
      <BBB name = \" bbb \"/>
      <BBB name = \"bbb\"/>
      </AAA>
      實例 7
      count()函數可以計數所選元素的個數

      //*[count(BBB)=2]
      選擇含有2個BBB子元素的元素
      <AAA>
      <CCC>
      <BBB/>
      <BBB/>
      <BBB/>
      </CCC>
      <DDD>
      <BBB/>
      <BBB/>
      </DDD>
      <EEE>
      <CCC/>
      <DDD/>
      </EEE>
      </AAA>

      //*[count(*)=2]
      選擇含有2個子元素的元素
      <AAA>
      <CCC>
      <BBB/>
      <BBB/>
      <BBB/>
      </CCC>
      <DDD>
      <BBB/>
      <BBB/>
      </DDD>
      <EEE>
      <CCC/>
      <DDD/>
      </EEE>
      </AAA>

      //*[count(*)=3]
      選擇含有3個子元素的元素
      <AAA>
      <CCC>
      <BBB/>
      <BBB/>
      <BBB/>
      </CCC>
      <DDD>
      <BBB/>
      <BBB/>
      </DDD>
      <EEE>
      <CCC/>
      <DDD/>
      </EEE>
      </AAA>
      實例 8
      name()函數返回元素的名稱, start-with()函數在該函數的第一個參數字符串是以第二個參數字符開始的情況返回true, contains()函數當其第一個字符串參數包含有第二個字符串參數時返回true.

      //*[name()=\'BBB\']
      選擇所有名稱為BBB的元素(這里等價于//BBB)
      <AAA>
      <BCC>
      <BBB/>
      <BBB/>
      <BBB/>
      </BCC>
      <DDB>
      <BBB/>
      <BBB/>
      </DDB>
      <BEC>
      <CCC/>
      <DBD/>
      </BEC>
      </AAA>

      //*[starts-with(name(),\'B\')]
      選擇所有名稱以\"B\"起始的元素
      <AAA>
      <BCC>
      <BBB/>
      <BBB/>
      <BBB/>
      </BCC>
      <DDB>
      <BBB/>
      <BBB/>
      </DDB>
      <BEC>
      <CCC/>
      <DBD/>
      </BEC>
      </AAA>

      //*[contains(name(),\'C\')]
      選擇所有名稱包含\"C\"的元素
      <AAA>
      <BCC>
      <BBB/>
      <BBB/>
      <BBB/>
      </BCC>
      <DDB>
      <BBB/>
      <BBB/>
      </DDB>
      <BEC>
      <CCC/>
      <DBD/>
      </BEC>
      </AAA>
      實例 9
      多個路徑可以用分隔符 | 合并在一起

      //CCC | //BBB
      選擇所有的CCC和BBB元素
      <AAA>
      <BBB/>
      <CCC/>
      <DDD>
      <CCC/>
      </DDD>
      <EEE/>
      </AAA>

      /AAA/EEE | //BBB
      選擇所有的BBB元素和所有是AAA的子元素的EEE元素
      <AAA>
      <BBB/>
      <CCC/>
      <DDD>
      <CCC/>
      </DDD>
      <EEE/>
      </AAA>

      /AAA/EEE | //DDD/CCC | /AAA | //BBB
      可以合并的路徑數目沒有限制
      <AAA>
      <BBB/>
      <CCC/>
      <DDD>
      <CCC/>
      </DDD>
      <EEE/>
      </AAA>
      實例 10
      child軸(axis)包含上下文節點的子元素, 作為默認的軸,可以忽略不寫.

      /AAA
      等價于 /child::AAA
      <AAA>
      <BBB/>
      <CCC/>
      </AAA>

      /child::AAA
      等價于/AAA
      <AAA>
      <BBB/>
      <CCC/>
      </AAA>

      /AAA/BBB
      等價于/child::AAA/child::BBB
      <AAA>
      <BBB/>
      <CCC/>
      </AAA>

      /child::AAA/child::BBB
      等價于/AAA/BBB
      <AAA>
      <BBB/>
      <CCC/>
      </AAA>

      /child::AAA/BBB
      二者都可以被合并
      <AAA>
      <BBB/>
      <CCC/>
      </AAA>

      實例 11
      descendant (后代)軸包含上下文節點的后代,一個后代是指子節點或者子節點的子節點等等, 因此descendant軸不會包含屬性和命名空間節點.

      /descendant::*
      選擇文檔根元素的所有后代.即所有的元素被選擇
      <AAA>
      <BBB>
      <DDD>
      <CCC>
      <DDD/>
      <EEE/>
      </CCC>
      </DDD>
      </BBB>
      <CCC>
      <DDD>
      <EEE>
      <DDD>
      <FFF/>
      </DDD>
      </EEE>
      </DDD>
      </CCC>
      </AAA>

      /AAA/BBB/descendant::*
      選擇/AAA/BBB的所有后代元素
      <AAA>
      <BBB>
      <DDD>
      <CCC>
      <DDD/>
      <EEE/>
      </CCC>
      </DDD>
      </BBB>
      <CCC>
      <DDD>
      <EEE>
      <DDD>
      <FFF/>
      </DDD>
      </EEE>
      </DDD>
      </CCC>
      </AAA>

      //CCC/descendant::*
      選擇在祖先元素中有CCC的所有元素
      <AAA>
      <BBB>
      <DDD>
      <CCC>
      <DDD/>
      <EEE/>
      </CCC>
      </DDD>
      </BBB>
      </AAA>

      分享:XML入門的常見問題(一)
      作者:AngelGavin 出處:CSDN一般問題 什么是 XML? 可擴展標記語言 (XML) 是 Web 上的數據通用語言。它使開發人員能夠將結構化數據,從許多不同的應用程序傳遞到桌面,進行本地計算和演示。XM

      來源:模板無憂//所屬分類:Xml教程/更新時間:2009-05-17
      相關Xml教程