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

C# XPath 語法完整入門指南:XML 查詢核心技術

     編輯:關於C#

前言

XPath 是 XML 的查詢語言,地位相當於資料庫的 SQL。掌握 XPath,即可精準定位 XML 文件中任意節點與值。本文以實例詳解核心語法。

範例 XML 結構

<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
  <cd country="USA">
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <price>10.90</price>
  </cd>
  <cd country="UK">
    <title>Hide your heart</title>
    <artist>Bonnie Tyler</artist>
    <price>9.90</price>
  </cd>
  <cd country="USA">
    <title>Greatest Hits</title>
    <artist>Dolly Parton</artist>
    <price>9.90</price>
  </cd>
</catalog>

核心語法分類

1. 節點定位路徑

語法說明範例結果
/catalog/cd/price絕對路徑:catalog 下所有 cd 的 price3 個 price 節點
//cd任意層級所有 cd 節點3 個 cd 節點
/catalog/cd/*cd 所有子元素title, artist, price
/catalog/*/pricecatalog 孫輩中名為 price 的節點3 個 price
/*/*/price任意兩層父節點下的 price同上
//*文件中所有元素所有節點

關鍵規則:/ 絕對路徑,// 任意層級,* 僅代表未知名稱,不代表未知層級。

2. 索引與條件過濾

/catalog/cd[1]           // 第一個 cd (XPath 索引從 1 開始)
/catalog/cd[last()]      // 最後一個 cd
/catalog/cd[price]       // 含 price 子元素的 cd
/catalog/cd[price=10.90] // price 值等於 10.90 的 cd
/catalog/cd[price=10.90]/price // 符合條件 cd 下的 price 節點

3. 多路徑聯集

/catalog/cd/title | /catalog/cd/artist
//title | //artist | //price

4. 屬性選取 (@ 符號)

//@country              // 所有 country 屬性
//cd[@country]          // 擁有 country 屬性的 cd
//cd[@*]                // 擁有任意屬性的 cd
//cd[@country='UK']     // country='UK' 的 cd

C# 中使用 XPath

XmlDocument doc = new XmlDocument();
doc.Load("catalog.xml");

XmlNodeList prices = doc.SelectNodes("/catalog/cd/price");
foreach (XmlNode n in prices) Console.WriteLine(n.InnerText);

XmlNode ukCd = doc.SelectSingleNode("//cd[@country='UK']");
Console.WriteLine(ukCd.SelectSingleNode("title").InnerText);

小結

XPath 語法簡潔強大,掌握路徑、萬用字元、索引、條件、聯集、屬性六大類語法,即可應對絕大多數 XML 查詢需求。配合 C# SelectNodes/SelectSingleNode,開發效率大幅提升。

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