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