LINQ to XML:關於 LINQ to XML

XML 是一種被廣泛採用的標準文件格式,現代開發工具均已對其提供了完整的支援,早期版本的 .NET 亦針對 XML 釋出了相關的 API ,提供開發人員編輯與操作 XML 文件所需的支援。LINQ to XML是一組全新的API,它提供操作與管理XML文件內容所需的功能,就如同泛型集合的查詢運算,XML的功能同樣被整合進 .NET 的型別系統,成為相關語法的一部分。

LINQ to XML 讓 C # 與 VB.NET 操作 XML 文件變得更為簡單,尤其是 VB.NET 的 XML Literals,它甚至讓開發人員可以將 XML 語法直接嵌入 VB.NET 程式碼當中,而 C# ,儘管沒有支援 XML Literals,但是我們依然可以透過LINQ來定義所謂的 XML 文件,而且這種方式相當的直觀。想要瞭解 LINQ 對於 XML 的支援,必須從兩個部分著手:查詢語法與 LINQ to XML API,前者使用與泛型集合相同的方法,將XML文件節點視為集合元素以執行節點的維護操作,後者是一組專為 XML 設計的獨立 API ,這組 API 提供整合 LINQ 技術所需的相關類別,讓開發人員能夠輕易的透過 LINQ 查詢存取 XML 文件。

LINQ to XML API 存在於命名空間 System.Xml.Linq ,它們提供維護管理 XML 文件內容所需的功能,這些類別以 X 為字首作命名,它們均以 X 為字首作命名,並且透過繼承衍生,例如: XElement、XDocument 以及 XNode 等等,如果你有使用 .NET 早期版本的 XML相關功能類別的經驗,看到這些類別的名稱,應該很容易理解其用途。

 XObject 為其中最頂層類別,是整個 LINQ to XML API 的基礎類別,它所代表的是一個 XML 樹狀架構中的節點(node)或屬性(attribute)等元素,從定義你可以發現它是一個抽象類別:

public abstract class XObject : IXmlLineInfo

XObject 提供基礎功能,由類別 XNode與XAttribute 類別繼承,並且繼續根據需求進行擴充。下圖是以 XObject 為基礎所衍生的 LINQ to XML 相關類別架構,從這個示意圖中,讀者可以瞭解整個 XML 類別架構的概況,其中每一個方塊代表位於 System.Xml.Linq 的特定類別。


圖中包含了不少的類別 , 它們根據 XML 元素的特性,提供相關的功能,除了 XObject 之外,其他標示為深色方塊者,為架構中比較重要的幾個類別,尤其是 XElement ,這個類別是整個 LINQ to XML API 中最重要的核心,我們透過這個類別執行各種XML樹狀目錄的元素操作。 此架構圖可以分成兩個部分,分別是衍生自 XObect 的子類別與非 XObject 的其它三個類別 XDeclaration、XName 與 XNamespace,這三個類別提供封裝與操作 XML 文件中非節點元素-宣告、元素名稱與命名空間等所需的相關功能。

以下是一個典型的 XML 文件內容,其中標示了各種 XML 樹狀目錄的構成元素與類別的關聯,讀者可以從圖中瞭解這些類別大致上的用途,除了特別標示的類別之外,大部分的節點,均以 XElement 作表示,因此,我們以此類別操作 XML 文件,它同時提供必要的屬性,用來取得由特定元素所組成的 IEnumerable 集合物件,以支援LINQ查詢運算。


LINQ to XML:XDocument & XElement 簡述 
LINQ to XML:關於 LINQ to XML 
LINQ to XML:XML命名空間與元素識別名稱 
LINQ to XML:XML內容元素 
LINQ to XML:XML文件載入與輸出 
LINQ to XML:載入 XML 內容 
LINQ to XML:輸出XML文件 
LINQ to XML:列舉XML元素 
LINQ to XML:存取特定XML元素 
LINQ to XML:新增XML元素 
LINQ to XML:元素屬性 
LINQ to XML:利用LIQN萃取XML文件內容元素 
LINQ to XML:元素存取與轉換 




沒有留言: