简介
可以将类序列化成xml文件,或者将xml文件反序列化成类对象,一般用于保存或加载项目参数。
构造函数
XmlSerializer()
不使用函数创建一个xmlSerializer对象。
XmlSerializer(Type type)
使用type对象创建一个xmlSerializer对象,注意,type必须为类,而不能是实例化的对象。
internal class Program
{
static void Main(string[] args)
{
Person zhangSan = new Person("zhangSan", 30, "lawer");
XmlSerializer serializer = new XmlSerializer(typeof(Person));
}
}
public class Person
{
public string name;
public int age;
public string job;
public Person() { } //必须要有一个不带参数的构造函数,不然序列化时,会报错
public Person(string name, int age, string job)
{
this.name = name;
this.age = age;
this.job = job;
}
}
首先创建一个Person类,里面拥有name,age和job三个字段,后续会用到。
常用方法
Serialize (Stream stream, object o)
使用stream流,将实例对象o序列化。
static void Main(string[] args)
{
Person zhangSan = new Person("zhangSan", 30, "lawer");
XmlSerializer serializer = new XmlSerializer(typeof(Person));
FileStream fs = new FileStream("test.xml", FileMode.OpenOrCreate, FileAccess.ReadWrite);
try
{
serializer.Serialize(fs, zhangSan);
Console.WriteLine("序列化成功");
}
catch
{
Console.WriteLine("序列化失败");
}
Console.ReadKey();
;
}
运行结果:
序列化成功
当序列化成功后,打开项目所在文件夹中的debug文件夹,可以发现,新生成了一个test.xml文件。
打开一看,会发现Person实例zhangSan的三个字段值,已经被保存到xml文档中了。如果以后程序关闭再打开,只要xml文档存在,那么我们就能直接读取对象的三个字段,而不用重新赋值了,下面我们来学一下,怎么在程序开启时读取文件参数。
Deserialize (Stream stream)
将流stream的信息,反序列化成实例对象。
static void Main(string[] args)
{
XmlSerializer serializer = new XmlSerializer(typeof(Person));
if (File.Exists("test.xml"))
{
FileStream fs = new FileStream("test.xml", FileMode.Open, FileAccess.Read);
Person zhangSan=serializer.Deserialize(fs) as Person;
Console.WriteLine("name:"+zhangSan.name);
Console.WriteLine("age:"+zhangSan.age);
Console.WriteLine("job:"+zhangSan.job);
}
else
{
Console.WriteLine("xml文档不存在");
}
Console.ReadKey();
;
}
运行结果:
name:zhangSan
age:30
job:lawer