XML文件的序列化
作者:SPARON MSN:ZHAOKEYONG@HOTMAIL.COM
儿天没写东东了,这儿天研究了下.NET对象的XML序列化,虽不是很深入,但还是记下,就算是学习道路的一个里程碑吧。
在WEBFORM开发中有很大一个难题是数据库的调用,虽然DATASET对数据的读取有了很大进步,但是每第一次访问网站时总会读很久的数据,有没有一种很的办法来控制呢?答案是肯定的,在.NET下有一种技术叫做对象序列化,它可以将对象序列化为二进制文件、XML文件、SOAP文件,这样,使用经过序列化的流进行传输效率就得到了大大的提升。
在.NET中提供了两种序列化:二进制序列化、XML和SOAP序列化。对于WEB应用来说,用得最多的是第二种———XML和SOAP序列化。
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。
注意:使用Serialize和Deserialize需要指明命令空间System.Xml.Serialization
个人总结
序列(Serialize) :将对象序列为文件。
反序列化(Deserialize):将文件序列为对象。
全部代码下载:XmlSerialize.cs