.NET對象的XML序列化和反序列化概念淺析
對于.NET對象的XML序列化和反序列化的理解我們首先來看看序列化的概念,什么是序列化呢?它是指一個對象的實例可以被保存成一個二進制串,當然,一旦被保存成二進制串,那么也就意味著可以保存成文本串了。
比如,一個計數(shù)器,數(shù)值為2,我們可以用字符串“2”表示。如果有個對象,叫做connter,當前值為2,那么可以序列化成“2”,反向的,也可以從“2”得到值為2的計數(shù)器實例。這樣,關機時序列化它,開機時反序列化它,每次開機都是延續(xù)的。不會都是從頭開始。
序列化概念的提出和實現(xiàn),可以使我們的應用程序的設置信息保存和讀取更加方便。序列化有很多好處,比如,在一臺機器上產(chǎn)生一個實例,初始化完畢,然后可以序列化,通過網(wǎng)絡傳送到另一臺機器,然后反序列化,得到對象實例,之后再執(zhí)行某些業(yè)務邏輯,得到結(jié)果,再序列化,返回第一臺機器,第一臺機器得到對象實例,得到結(jié)果。
當前比較熱火的web services使用soap協(xié)議,soap協(xié)議也是以對象的可序列化為基礎的。
.NET對象的XML序列化和反序列化實現(xiàn)的概述:
一、概述
.NET Framework為處理XML數(shù)據(jù)提供了許多不同的類庫。XmlDocument類能讓你像處理文件一樣處理xml數(shù)據(jù),而XmlReader、XmlWriter和它們的派生類使你能夠?qū)ml數(shù)據(jù)作為數(shù)據(jù)流處理。
XmlSerializer則提供了另外的方法,它使你能夠?qū)⒆约旱膶ο蟠谢头创谢癁閤ml。串行化數(shù)據(jù)既能夠讓你像處理文件一樣對數(shù)據(jù)進行隨機處理,同時又能跳過你不感興趣的數(shù)據(jù)。
二、主要類庫介紹
.NET 支持對象xml序列化和反序列化的類庫主要位于命名空間System.Xml.Serialization中。
1. XmlSerializer 類
該類用一種高度松散耦合的方式提供串行化服務。你的類不需要繼承特別的基類,而且它們也不需要實現(xiàn)特別的接口。相反,你只需在你的類或者這些類的公共域以及讀/寫屬性里加上自定義的特性。XmlSerializer通過反射機制讀取這些特性并用它們將你的類和類成員映射到xml元素和屬性。
2. XmlAttributeAttribute 類
指定類的公共域或讀/寫屬性對應xml文件的Attribute。
例:[XmlAttribute(“type”)] or [XmlAttribute(AttributeName=”type”)]
3. XmlElementAttribute類
指定類的公共域或讀/寫屬性對應xml文件的Element。
例:[XmlElement(“Maufacturer”)] or [XmlElement(ElementName=”Manufacturer”)]
4. XmlRootAttribute類
Xml序列化時,由該特性指定的元素將被序列化成xml的根元素。
例:[XmlRoot(“RootElement”)] or [XmlRoot(ElementName = “RootElements”)]
5. XmlTextAttribute 類
Xml序列化時,由該特性指定的元素值將被序列化成xml元素的值。一個類只允許擁有一個該特性類的實例,因為xml元素只能有一個值。
6. XmlIgnoreAttribute類
Xml序列化時不會序列化該特性指定的元素。
對于.NET對象的XML序列化和反序列化的理解的基本內(nèi)容就向你介紹到這里,希望對你了解和學習.NET對象的XML序列化和反序列化有所幫助。
【編輯推薦】