天天看點

C#基礎拾遺02-XML串行化

1. 什麼叫串行化?

串行化(Serialize)是指将對象存儲到媒體(如檔案、記憶體緩沖區等)中或是以二進制方式通過網絡傳輸。反串行化(Deserialize)指将這些連續的資料重新建構一個與原始對象狀态相同的對象

2. 串行化分類兩種形式

二進制串行化

串行化時資料以二進制形式存入檔案。但是該方式不适合同其他非.NET程式交換資料。

XML串行化

對象的公共屬性以XML元素和特性表示。該方式可以和其他非.NET程式交換資料。該方法要引用命名空間using System.Xml.Serialization;

另外,XML串行化器是不能針對枚舉類型串行化操作的,如果有必要的話,可以将枚舉型變量設定為私有變量,并且設定相應的簡單類型變量進行操作。

3. 執行個體

     首先建立我們要串行化的類:

<a></a>

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()); 

調用:

調用串行化

此時打開book.prt檔案,如下圖所示。

<a href="http://images.cnblogs.com/cnblogs_com/janes/201106/201106031829521223.png"></a>

反串行化方法

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; 

調用

結果如下:

<a href="http://images.cnblogs.com/cnblogs_com/janes/201106/201106031829528998.png"></a>

    本文轉自 陳敬(Cathy) 部落格園部落格,原文連結:http://www.cnblogs.com/janes/archive/2011/06/03/2072145.html,如需轉載請自行聯系原作者