序列化是将对象转换为可保持或传输的格式的过程。反序列化的过程正好是相反的过程。
一、准备阶段,得有一个可供序列化的对象类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://www.jb51.cc/article/p-zdxzlvri-gg.html