.NET對象的XML序列化和反序列化概念淺析
對于.NET對象的XML序列化和反序列化的理解我們首先來看看序列化的概念,什么是序列化呢?它是指一個對象的實例可以被保存成一個二進制串,當然,一旦被保存成二進制串,那么也就意味著可以保存成文本串了。
比如,一個計數器,數值為2,我們可以用字符串“2”表示。如果有個對象,叫做connter,當前值為2,那么可以序列化成“2”,反向的,也可以從“2”得到值為2的計數器實例。這樣,關機時序列化它,開機時反序列化它,每次開機都是延續的。不會都是從頭開始。
序列化概念的提出和實現,可以使我們的應用程序的設置信息保存和讀取更加方便。序列化有很多好處,比如,在一臺機器上產生一個實例,初始化完畢,然后可以序列化,通過網絡傳送到另一臺機器,然后反序列化,得到對象實例,之后再執行某些業務邏輯,得到結果,再序列化,返回第一臺機器,第一臺機器得到對象實例,得到結果。
當前比較熱火的web services使用soap協議,soap協議也是以對象的可序列化為基礎的。
.NET對象的XML序列化和反序列化實現的概述:
一、概述
.NET Framework為處理XML數據提供了許多不同的類庫。XmlDocument類能讓你像處理文件一樣處理xml數據,而XmlReader、XmlWriter和它們的派生類使你能夠將xml數據作為數據流處理。
XmlSerializer則提供了另外的方法,它使你能夠將自己的對象串行化和反串行化為xml。串行化數據既能夠讓你像處理文件一樣對數據進行隨機處理,同時又能跳過你不感興趣的數據。
二、主要類庫介紹
.NET 支持對象xml序列化和反序列化的類庫主要位于命名空間System.Xml.Serialization中。
1. XmlSerializer 類
該類用一種高度松散耦合的方式提供串行化服務。你的類不需要繼承特別的基類,而且它們也不需要實現特別的接口。相反,你只需在你的類或者這些類的公共域以及讀/寫屬性里加上自定義的特性。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序列化和反序列化的理解的基本內容就向你介紹到這里,希望對你了解和學習.NET對象的XML序列化和反序列化有所幫助。
【編輯推薦】