LINQ基礎(chǔ)學(xué)習(xí)之LINQ to XML
LINQ to XML是很前沿的一項(xiàng)技術(shù),他的功能十分的強(qiáng)大,很多人對(duì)此可能還不是很熟悉,所以筆者來向大家介紹一下。
LINQ to XML 提供使用 .NET 語(yǔ)言集成查詢 (LINQ) Framework 的內(nèi)存中 XML 編程接口。LINQ to XML 使用***的 .NET Framework 語(yǔ)言功能,相當(dāng)于更新的和重新設(shè)計(jì)的文檔對(duì)象模型 (DOM) XML 編程接口。
.NET Framework提供了大量的API用于處理XML數(shù)據(jù). 從Framework 3.5開始, 對(duì)于處理常規(guī)XML文檔的***選擇將是LINQ to XML. LINQ to XML包含一個(gè)輕量級(jí)的LINQ友好的XML文檔對(duì)象模型, 以及一系列附加的查詢操作符.。
在多數(shù)場(chǎng)景中, 它可以被當(dāng)中是先前的W3C兼容的DOM模型的替換(即XmlDocument). LINQ to XML DOM設(shè)計(jì)極其優(yōu)良并且可以高效執(zhí)行. 即使沒有LINQ, LINQ to XML DOM作為對(duì)低級(jí)XmlReader和XmlWriter的門面(Facade)包裝也是非常有價(jià)值的.
所有的LINQ to XML類型都定義在System.Xml.Linq命名空間下.
LINQ to XML架構(gòu)概貌
考慮以下的XML文件
- "1.0" encoding="utf-8" standalone="yes"?>
"123" status="archived"> Joe Bloggs
對(duì)于所有的XML文件, 我們首先定義一個(gè)聲明, 然后定義一個(gè)root元素, 它的名稱是customer. customer元素包含有兩個(gè)屬性, 并各自有名稱(id和status)以及對(duì)應(yīng)值(”123″和”archived”). customer還擁有兩個(gè)子元素, firstName和lastName, 它們還包含了各自的簡(jiǎn)單文本內(nèi)容(”Joe”和”Bloggs”).
所有的這些構(gòu)件–聲明,元素,屬性,值以及文本內(nèi)容, 都可以用一個(gè)類來展現(xiàn). 如果這樣的一個(gè)類型擁有集合屬性來存儲(chǔ)子內(nèi)容的話, 我們可以聚合一棵對(duì)象樹來描述一個(gè)文檔. 這被稱為文檔對(duì)象模型, 即DOM.
LINQ to XML包含兩個(gè)內(nèi)容:
一個(gè)XML DOM, 我們稱它為X-DOM
一系列附加的查詢操作符
正如你可能期待的那樣, X-DOM的組成類型包括像XDocument, XElement以及XAttribute. 有趣的是, X-DOM的類型并不依賴于LINQ–在沒有編寫任何LINQ to XML查詢的情況下你依然可以加載, 實(shí)例化, 更新以及保存一個(gè)X-DOM.
相反的, 你能夠使用LINQ去查詢一個(gè)DOM并創(chuàng)建一個(gè)老式的W3C兼容的類型. 然而, 過程可能會(huì)令人沮喪并且會(huì)有一定的限制. 一個(gè)區(qū)別(與W3C DOM比)的特征是XDOM是LINQ友好的, 這意味著:
它擁有一些方法去處理IEnumerable序列,可以通過LINQ to XML去構(gòu)建一棵XDOM對(duì)象樹 。
以上就是對(duì)LINQ to XML的簡(jiǎn)單闡述。
【編輯推薦】