使用XMLSerializer類持久化數(shù)據(jù)
2006/12/31 9:53:11

微軟在 .NET Framework 中通過System.Runtime.Serialization和System.Xml.Serialization提供了序列化功能,從這里我們可以看到微軟已經(jīng)承認(rèn)了持久化數(shù)據(jù)的需要。System.Runtime.Serialization提供了開發(fā)自定義序列化解決方案的框架。System.XML.Serialization命名空間提供了以 XML 持久化對象的基本功能。下面讓我們近距離看一下如何使用這一方法。
XML 的普通要求
XML 序列化是將一個對象的公有屬性(property)和域(field)轉(zhuǎn)換到一個序列化格式(在這里是 XML)用于存儲或傳輸?shù)倪^程。反序列化是從 XML 輸出中按照對象的原始狀態(tài)重新創(chuàng)建對象的過程。因此,你可以將序列化看作是一種將對象狀態(tài)保存到一個流或緩沖區(qū)的方法。
序列的兩個常用的地方是數(shù)據(jù)持久化和數(shù)據(jù)交換。持久化指在用戶的會話間保存數(shù)據(jù)的過程。當(dāng)應(yīng)用程序關(guān)閉時數(shù)據(jù)被存儲(序列化),當(dāng)用戶回來時數(shù)據(jù)被重新裝載(反序列化)。數(shù)據(jù)交換是將數(shù)據(jù)提供其它系統(tǒng)的過程。使用序列化和 XML 可以很簡單地實(shí)現(xiàn)數(shù)據(jù)交換。
對象中的數(shù)據(jù)在編程語句結(jié)構(gòu)中被描述為類(class)、域(field)、屬性(property)、基元類型(primitive type)、數(shù)組(array),甚至是以System.Xml.XmlElement或System.Xml.XmlAttribute形式出現(xiàn)的內(nèi)嵌 XML。
System.Xml.Serialization命名空間的中心類是XmlSerializer。它還包含處理 XML 的各個方面的類以及使用 SOAP 的類,但是XmlSerializer是我們關(guān)注的焦點(diǎn)。
XmlSerializer
XmlSerializer類允許你將數(shù)據(jù)序列化到 XML 文檔并從 XML 文檔反序列化對象。它能夠使你控制對象如何被編碼到 XML。其類構(gòu)造器接受對象類型作為參數(shù)以進(jìn)行序列化。下面的 C# 代碼展示了如何使用構(gòu)建器:
XmlSerializer ser = new XmlSerializer(typeof(objectToSerialize)); 
下面是對應(yīng)的 VB.NET 代碼:
Dim ser As New XmlSerializer(GetType(objectToSerialize)) 
實(shí)際的序列化過程是由XmlSerializer類的Serialize 方法完成的。這個方法有六個簽名,這些簽名允許你在序列化過程中使用TextWriter、Stream 和XmlWriter對象。下面的示例代碼展示了如何使用這個方法。該例將一個對象序列化到本地磁盤驅(qū)動器上的一個文件中。下面首先列出的是使用類的代碼,然后是實(shí)際的序列化代碼:
using System;
namespace BuilderSerialization {
public class Address {
public Address() {}
public string Address1;
public string Address2;
public string City;
public string State;
public string Zip;
public string Country;
} }
using System;
namespace BuilderSerialization {
public class Author {
public Author() { }
public string FirstName;
public string MiddleName;
public string LastName;
public string Title;
public string Gender;
public Address AddressObject;
} }
namespace BuilderSerialization {
public class Book {
public Book() { }
public string Title;
public Author AuthorObject;
public string ISBN;
public double RetailPrice;
public string Publisher;
}}
using System;
using System.Xml.Serialization;
using System.IO;
namespace BuilderSerialization {
class TestClass {
static void Main(string[] args) {
Book BookObject = new Book();
XmlSerializer ser = new XmlSerializer(typeof(Book));
TextWriter writer = new StreamWriter("booktest.xml");
BookObject.Title = "Practical LotusScript";
BookObject.ISBN = "1884777767 ";
BookObject.Publisher = "Manning Publications";
BookObject.RetailPrice = 43.95;
BookObject.AuthorObject = new Author();
BookObject.AuthorObject.FirstName

下一頁
返回列表
返回首頁 主站蜘蛛池模板: 日本无吗免费一二区| 白嫩少妇激情无码| 国产精品一区二区久久国产| japanese老熟妇乱子伦视频 | 亚洲欧美日韩国产一区二区精品 | 久久只有这才是精品99| 知乎的小说哪里可以免费| 国产亚洲精品美女久久久久| chinese精品男同志浪小辉| 最近2019中文字幕mv免费看| 亚洲爱情岛论坛| 粉嫩小仙女脱内衣喷水自慰| 国产FREEXXXX性麻豆| 高能预警韩国双ts超美| 国产精品久久久久久久| 91精品国产福利在线观看| 日本簧片在线观看| 亚洲精品自在在线观看| 精品无码国产一区二区三区51安| 国产精品对白刺激久久久| a级成人免费毛片完整版| 影音先锋男人站| 中文字日本乱码| 日本漫画全彩口工漫画绅士| 亚洲1区1区3区4区产品乱码芒果| 欧美日韩一区二区三区视视频| 亚洲综合久久精品无码色欲| 精品一区二区三区在线成人| 台湾佬中文娱乐网在线更新| 2019中文字幕在线电影免费| 天堂av无码av一区二区三区| 久久伊人精品一区二区三区| 欧洲美女与动性zozozo| 亚洲小说图片视频| 欧美色图亚洲自拍| 啊灬啊别停老师灬用力啊视频| 风间由美性色一区二区三区| 国产成人综合在线视频| bt天堂中文资源在线| 干妞网免费视频| 三级黄色片免费看|