序列化是將對象轉換爲可保持或傳輸的格式的過程。反序列化的過程正好是相反的過程。
一、準備階段,得有一個可供序列化的對象類Person類。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
namespace XMLSerializer
{
[Serializable]
public class Person
{
private string name;
[XmlElementAttribute(ElementName ="姓名")]
public string Name
{
get { return name; }
set { name = value; }
}
private string sex;
[XmlElementAttribute(ElementName = "性別")]
public string Sex
{
get { return sex; }
set { sex = value; }
}
private int age;
[XmlElementAttribute(ElementName = "年齡")]
public int Age
{
get { return age; }
set { age = value; }
}
public Person()
{
}
public Person(string _name,string _sex,int _age)
{
Name = _name;
Sex = _sex;
Age = _age;
}
}
}
二、序列化的過程
1、建立一個流對象如Stream等。
2、建立一個序列化對象XmlSerialize。
3、調用XmlSerialize對象的Deserialize方法。
Person p1 = new Person("張三", "男", 20);
try
{
FileStream fs = new FileStream("person.xml", FileMode.Create);
//序列化
XmlSerializer xs = new XmlSerializer(typeof(Person));
xs.Serialize(fs, p1);
fs.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.WriteLine("序列化成功");
三、反序列化過程
//反序列化
try
{
FileStream fileStream = new FileStream("person.xml", FileMode.Open, FileAccess.Read);
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Person));
Person p = (Person)xmlSerializer.Deserialize(fileStream);
Console.WriteLine(p.Name + p.Sex + p.Age);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
參考資料:
Person 類的來源,C# 類用XmlSerializer進行序列化和反序列化進行文件讀寫的一個簡單例子: http://blog.csdn.net/wyzxk888/article/details/6341009