C#基础拾遗02-XML串行化

C#基础拾遗02-XML串行化

1. 什么叫串行化?

串行化(Serialize)是指将对象存储到介质(如文件、内存缓冲区等)中或是以二进制方式通过网络传输。反串行化(Deserialize)指将这些连续的数据重新构建一个与原始对象状态相同的对象

2. 串行化分类两种形式

  • 二进制串行化

串行化时数据以二进制形式存入文件。但是该方式不适合同其他非.NET程序交换数据。

  • XML串行化

对象的公共属性以XML元素和特性表示。该方式可以和其他非.NET程序交换数据。该方法要引用命名空间using System.Xml.Serialization;

另外,XML串行化器是不能针对枚举类型串行化操作的,如果有必要的话,可以将枚举型变量设置为私有变量,并且设置相应的简单类型变量进行操作。


3. 实例

     首先创建我们要串行化的类:

 

public   class  Book
{
     
public   string  _title;
     
public    int  _page;
     
public   string [] _Part;
     
public   string  _author;
     
public   float  _price;
}

 

  • 串行化对象
    void SerializeObject(Book[] book) 



    try 



    XmlSerializer ser 
    = new XmlSerializer(typeof(Book[]), new XmlRootAttribute("Books"));//声明对象,并且添加根节点 

    StreamWriter sw 
    = new StreamWriter("book.prt"); 

    ser.Serialize(sw, book); 

    sw.Close(); 



    catch (Exception e) 



    MessageBox.Show(
    "串行化失败:" + e.Message.ToString()); 



 

调用:

 

ExpandedBlockStart.gif 调用串行化
private   void  Serialize_Click( object  sender, EventArgs e) 

Book book 
=   new  Book(); 
book._title 
=   " 西游记 "
book ._author
= " 吴承恩 "
book._page 
=   420
book._Part 
=   new   string []{ " 第一章? " " 第二章? " " 第三章? " " ... " }; 
book._price 
=   55
。。。。。 
Book[] books 
=   new  Book[ 2 ] { book, book2 }; 
SerializeObject(books ); 

 

此时打开book.prt文件,如下图所示。

image

  • 反串行化方法
    private Book[] DeserializeObject() 



    FileStream fs 
    = new FileStream("book.prt", FileMode.Open); 

    XmlSerializer ser 
    = new XmlSerializer(typeof(Book[]), new XmlRootAttribute("Books")); 

    Book[] books 
    = (Book[])ser.Deserialize(fs); 

    return books; 

 

 

ExpandedBlockStart.gif 调用
Book[] books  =  DeserializeObject(); 
foreach  (Book b  in  books) 

string  s  =  b._title  +   " : "   +  b._author  +   " , "   +  b._price  +   " , "
listBox1.Items.Add(s); 

 

结果如下:

image

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值