LINQ to XML
.Net Framework提供了大量的API用於處理XML數據. 從Framework 3.5開始, 對於處理常規XML文檔的第一選擇將是LINQ to XML. LINQ to XML包含一個輕量級的LINQ友好的XML文檔對象模型, 以及一系列附加的查詢操作符. 在多數場景中, 它可以被當中是先前的W3C兼容的DOM模型的替換(即XMLDocument). LINQ to XML DOM設計極其優良並且可以高效執行. 即使沒有LINQ, LINQ to XML DOM作為對低級XmlReader和XMLWriter的門面(Facade)包裝也是非常有價值的.
所有的LINQ to XML類型都定義在System.XML.Linq命名空間下.
架構概貌
考慮以下的XML文件
1: <?XML version="1.0" encoding="utf-8" standalone="yes"?>
2: <customer id="123" status="archived">
3: <firstname>Joe</firstname>
4: <lastname>Bloggs</lastname>
5: </customer>
對於所有的XML文件, 我們首先定義一個聲明, 然後定義一個root元素, 它的名稱是customer. customer元素包含有兩個屬性, 並各自有名稱(id和status)以及對應值(”123″和”archived”). customer還擁有兩個子元素, firstName和lastName, 它們還包含了各自的簡單文本內容(”Joe”和”Bloggs”).
所有的這些構件–聲明,元素,屬性,值以及文本內容, 都可以用一個類來展現. 如果這樣的一個類型擁有集合屬性來存儲子內容的話, 我們可以聚合一棵對象樹來描述一個文檔. 這被稱為文檔對象模型, 即DOM.
LINQ to XML包含兩個內容:
正如你可能期待的那樣, X-DOM的組成類型包括像XDocument, XElement以及XAttribute. 有趣的是, X-DOM的類型並不依賴於LINQ–在沒有編寫任何LINQ查詢的情況下你依然可以加載, 實例化, 更新以及保存一個X-DOM.
相反的, 你能夠使用LINQ去查詢一個DOM並創建一個老式的W3C兼容的類型. 然而, 過程可能會令人沮喪並且會有一定的限制. 一個區別(與W3C DOM比)的特征是XDOM是LINQ友好的, 這意味著:
待續!