首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

XPath 完整教學:資料型別、節點類型、路徑/位置/屬性/親屬/條件匹配語法詳解

     編輯:ASP.NET 基礎

XPath 四大資料型別

型別說明轉換性
節點集 (node-set) 路徑匹配回傳的節點集合,唯一無法從其他型別轉換而來 不可轉換
布林值 (boolean) true/false,函式或比較運算結果 可與數值、字串互轉
字串 (string) 字元序列,提供豐富字串函式 可與數值、布林互轉
數值 (number) IEEE 754 雙精度浮點數,含 NaN、Infinity、±0 可與布林、字串互轉

XPath 七種節點類型

  1. 根節點 (Root Node):樹最頂層,唯一,所有元素皆其子孫
  2. 元素節點 (Element Nodes):對應 XML 元素,可有屬性、子元素、註解、處理指令、文字
  3. 文字節點 (Text Nodes):CDATA 區塊內容,無緊鄰兄弟文字節點,無擴展名
  4. 屬性節點 (Attribute Nodes):元素的屬性集合,父節點為元素,但不是元素的子節點 (單向關係)
  5. 命名空間節點 (Namespace Nodes):元素宣告的命名空間,特性類似屬性節點
  6. 處理指令節點 (Processing Instruction Nodes):如 <?xml version="1.0"?>
  7. 註解節點 (Comment Nodes):<!-- 註解 -->

範例 XML 文件樹

<A id="a1">
  <B id="b1">
    <C id="c1">
      <B name="b"/>
      <D id="d1"/>
      <E id="e1"/>
      <E id="e2"/>
    </C>
  </B>
  <B id="b2"/>
  <C id="c2">
    <B/>
    <D id="d2"/>
    <F/>
  </C>
  <E/>
</A>

五大匹配方法詳解

1. 路徑匹配

語法意義範例結果
/A/C/D絕對路徑:A→C→Did=d2 的 D 節點
//E所有 E 元素 (任意深度)三個 E 節點
//C/E父節點為 C 的所有 Eid=e1, e2 的兩個 E
/A/B/C/*C 下所有子元素B(name=b), D(d1), E(e1), E(e2)
/*/*/D深度 2 的所有 Did=d2 的 D

2. 位置匹配

/A/B/C[1]           // C 的第一個子元素 → B(name=b)
/A/B/C[last()]      // C 的最後一個子元素 → E(id=e2)
/A/B/C[position()>1] // C 位置>1 的子元素 → D(d1), E(e1), E(e2)

3. 屬性與屬性值匹配

//B[@id]            // 所有有 id 屬性的 B → b1, b2
//B[@*]             // 所有有任意屬性的 B → b1, b2, B(name=b)
//B[not(@*)]        // 無屬性的 B → C 下的 B
//B[@id="b1"]       // id 等於 b1 的 B → A 下的 B

4. 親屬關係匹配 (Axes)

軸範例結果
parent//E/parent::*A(id=a1), C(id=c1)
ancestor//F/ancestor::*A(id=a1), C(id=c2)
child/A/child::*B(b1), B(b2), C(c2), E(無屬性)
descendant/A/descendant::*除 A 外所有節點
self//F/self::*F 本身
ancestor-or-self//F/ancestor-or-self::*F, C(c2), A(a1)
descendant-or-self/A/C/descendant-or-self::*C(c2), 其子 B, D, F
following-sibling/A/C/following-sibling::*E(無屬性)
preceding-sibling/A/C/preceding-sibling::*B(b1), B(b2)
following/A/B/C/following::*文件順序在 C 之後的所有節點
preceding/A/C/preceding::*文件順序在 C 之前的所有節點

5. 條件匹配 (Predicate + Functions)

在 [...] 中使用函式運算布林值:

  • 節點函式:last(), position(), count(), name()
  • 字串函式:contains(), starts-with(), substring()
  • 數值函式:sum(), floor(), round()
  • 布林函式:not(), true(), false(), lang()

範例://B[@id and position()=1] 選取第一個有 id 的 B。

官方參考文件

MSDN: XPath Reference (System.Xml.XPath)

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved