快速上手LINQ to XML
在我們的程序中,我們經(jīng)常需要將一些系統(tǒng)的數(shù)據(jù)、信息保存在文件中,而不是保存在數(shù)據(jù)庫(kù)中,在.NET中,我通常都是選擇將這些系統(tǒng)的數(shù)據(jù)、信息保存在XML中。
操作XML的技術(shù)有很多種:
1)DOM(Document Object Model,文檔對(duì)象模型),它為XML文檔提供了一個(gè)標(biāo)準(zhǔn)的解析。
2)XPath和XSLT,它們提供了查詢和格式化XML的功能。
3).NET框架中提供了一些對(duì)XML操作的類(在System.XML命名空間下)。
4)LINQ to XML。
在我看來有了LINQ to XML技術(shù),.NET中其它操縱XML的技術(shù)都可以棄而不用了,因?yàn)長(zhǎng)INQ to XML操縱XML比其它技術(shù)都更簡(jiǎn)單更方便也更直觀。
LINQ to XML 是基于LINQ的,所以可以使用LINQ的所有功能,如標(biāo)準(zhǔn)查詢操作符(詳細(xì)可閱讀《LINQ標(biāo)準(zhǔn)查詢操作符詳解》)和LINQ的編程接口。使用LINQ to XML可以很方便地將XML文件加載到內(nèi)存中,對(duì)XML文檔中的節(jié)點(diǎn)進(jìn)行查詢修改刪除等各種操作,然后又可以很方便地將操作后的XML文檔保存回磁盤。
System.Xml.Linq的命名空間中包含了LINQ to XML處理XML用到的所有類,共有19個(gè)類,如下所示。
類 說明
包含 LINQ to XML 擴(kuò)展方法。
表示一個(gè) XML 特性。
表示一個(gè)包含 CDATA 的文本節(jié)點(diǎn)。
表示一個(gè) XML 注釋。
表示可包含其他節(jié)點(diǎn)的節(jié)點(diǎn)。
表示一個(gè) XML 聲明。
表示 XML 文檔。
表示 XML 文檔類型定義 (DTD)。
表示一個(gè) XML 元素。
表示 XML 元素或特性的名稱。
表示一個(gè) XML 命名空間。此類不能被繼承。
表示 XML 樹中節(jié)點(diǎn)的抽象概念(元素、注釋、文檔類型、處理指令或文本節(jié)點(diǎn))。
包含用于比較節(jié)點(diǎn)的文檔順序的功能。無法繼承此類。
比較節(jié)點(diǎn)以確定其是否相等。無法繼承此類。
表示 XML 樹中的節(jié)點(diǎn)或特性。
提供有關(guān) Changing和 Changed事件的數(shù)據(jù)。表示 XML 處理指令。
表示支持延遲流輸出的 XML 樹中的元素。
表示一個(gè)文本節(jié)點(diǎn)。
這19個(gè)類提供了很多很多的方法,事實(shí)上很少人會(huì)在學(xué)習(xí)LINQ to XML的時(shí)候去學(xué)習(xí)每一種的方法的細(xì)節(jié),本文的目的是讓從來沒有使用過LINQ to XML的童鞋在需要使用LINQ to XML技術(shù)的時(shí)候快速上手,然后用之于自己的程序開發(fā)中,所以本文只講LINQ to XML處理XML類中最常用、用到最多的三個(gè)類,分別是XDocument、XElement和XAttribute。
XDocument類派生于XContainer類,因此它可以有子節(jié)點(diǎn),但XML的標(biāo)準(zhǔn)限制了XDocument對(duì)象只包含單個(gè)XElement子節(jié)點(diǎn),因?yàn)閄ML文檔只允許有一個(gè)根節(jié)點(diǎn)。
XDocument提供了處理有效XML文檔,包括聲明、注釋和處理指令。
XDocument 可以包含以下元素:
1)一個(gè) XDeclaration 對(duì)象。 XDeclaration 使您能夠指定 XML 聲明的相關(guān)部分:XML 版本、文檔的編碼以及 XML 文檔是否是獨(dú)立的。
2)一個(gè) XElement 對(duì)象。 這是 XML 文檔的根節(jié)點(diǎn)。
3)任意數(shù)目的 XProcessingInstruction 對(duì)象。 處理指令將信息傳遞給處理 XML 的應(yīng)用程序。
4)任意數(shù)目的 XComment 對(duì)象。 注釋將與根元素同級(jí)。 XComment 對(duì)象不能是列表中的第一個(gè)參數(shù),因?yàn)?XML 文檔以注釋開頭無效。
5)一個(gè)用于 DTD 的 XDocumentType。
原文鏈接:http://www.cnblogs.com/zoupeiyang/archive/2011/07/25/2115941.html
【編輯推薦】
- Linq to xml操作XML
- XML之父解讀未來互聯(lián)網(wǎng)"游戲化"的三個(gè)真諦
- Ajax和Web服務(wù)數(shù)據(jù)格式:XML SOAP HTML
- 超強(qiáng)解析XML——簡(jiǎn)單直接的來
- 解析PHP中的XML數(shù)據(jù)