XML文件的序列化

 

作者:SPARON                 MSNZHAOKEYONG@HOTMAIL.COM

 

儿天没写东东了,这儿天研究了下.NET对象的XML序列化,虽不是很深入,但还是记下,就算是学习道路的一个里程碑吧。

 

WEBFORM开发中有很大一个难题是数据库的调用,虽然DATASET对数据的读取有了很大进步,但是每第一次访问网站时总会读很久的数据,有没有一种很的办法来控制呢?答案是肯定的,在.NET下有一种技术叫做对象序列化,它可以将对象序列化为二进制文件、XML文件、SOAP文件,这样,使用经过序列化的流进行传输效率就得到了大大的提升。

 

.NET中提供了两种序列化:二进制序列化、XMLSOAP序列化。对于WEB应用来说,用得最多的是第二种———XMLSOAP序列化。

 

XML 序列化将对象的公共字段和属性或者方法的参数和返回值转换(序列化)为符合特定 XML 架构定义语言 (XSD) 文档的 XML 流。XML 序列化生成强类型的类,并为存储或传输目的将其公共属性和字段转换为序列格式(在此情况下为 XML)。

 

注意

XML 序列化不转换方法、索引器、私有字段或只读属性(只读集合除外)。

 

理解了基本的理论后我们来看看XML是如何进行对象序列化的。

看死板的文字是非常枯燥的,还是用CODE来说明问题直截了当。

 

XML文件序列:

SerObj obj = new SerObj();

obj.name = "sparon";

obj.age = 23;

obj.sex = true;

XmlSerializer ser = new XmlSerializer(typeof (SerObj));

Stream file = new FileStream("sptxt.xml", FileMode.Create, FileAccess.Write);

ser.Serialize(file, obj);

 

SerObj对象如下:

public class SerObj

{

    public string name;

    public int age;

    public bool sex;//true为男;false为女;

    public SerObj() { }

}

 

其实关键步骤只有两步:

XmlSerializer ser = new XmlSerializer(typeof (SerObj));

使用SerObj对象的类型来造一个XmlSerializer,然后使用Serialize方法将Stream对象和SerObj对象一起传入,序列出一个XML文件。

XML文件如下所示:

<?xml version="1.0"?>

<SerObj xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

 <name>sparon</name>

 <age>23</age>

 <sex>true</sex>

</SerObj>

 

 

反序列化步骤如下:

SerObj obj = new SerObj();

XmlSerializer ser = new XmlSerializer(typeof (SerObj));

Stream file = new FileStream("sptxt.xml", FileMode.Open , FileAccess.Read );

obj=(SerObj )ser.Deserialize(file);

 

其差别就在后两句而关键的就只有obj=(SerObj )ser.Deserialize(file);一句。这个是反序列化XML文件并转换为SerObj类型赋予obj

 

注意:使用SerializeDeserialize需要指明命令空间System.Xml.Serialization

 

个人总结

序列(Serialize :将对象序列为文件。

反序列化(Deserialize):将文件序列为对象。

 

全部代码下载:XmlSerialize.cs

 

posted @ 2006-06-15 15:50  SPARON  阅读(4118)  评论(4编辑  收藏  举报