假设我们有实体类:
public class Person
{
public string Name
{
get;
set;
}
public int Age
{
get;
set;
}
public Family Family
{
get;
set;
}
}
public class Family
{
public string Husband
{
get;
set;
}
public string Child
{
get;
set;
}
}
一、如何将Person的实例序列化为XML文件呢?XmlSerializer会帮我们完成这件事情。
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(Person));
/*
* 对象生成XML文件
* */
Person p = new Person();
p.Name = "Elena";
p.Age = 25; Family f = new Family();
f.Husband = "Will";
f.Child = "Tom";
p.Family = f; using (System.IO.FileStream fs = new System.IO.FileStream(
string.Format("{0}\\{1}", AppDomain.CurrentDomain.BaseDirectory, "text.xml"),
System.IO.FileMode.OpenOrCreate,
System.IO.FileAccess.ReadWrite))
{
serializer.Serialize(fs, p);
fs.Close();
}
生成后的XML文件如下:
<?xml version="1.0"?>
<Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name>Elena</Name>
<Age>25</Age>
<Family>
<Husband>Will</Husband>
<Child>Tom</Child>
</Family>
</Person>
二、如何将XML文件反序列化为对象实例?XmlSerializer会帮我们完成这件事情。
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(Person)); Person p;
using (System.IO.FileStream fs = new System.IO.FileStream(
string.Format("{0}\\{1}", AppDomain.CurrentDomain.BaseDirectory, "text.xml"),
System.IO.FileMode.OpenOrCreate,
System.IO.FileAccess.ReadWrite))
{
p = serializer.Deserialize(fs) as Person;
fs.Close();
} if (p != null)
{
Console.WriteLine(string.Format("Name\t= {0}", p.Name));
Console.WriteLine(string.Format("Age\t= {0}", p.Age));
Console.WriteLine(string.Format("Husband\t= {0}", p.Family.Husband));
Console.WriteLine(string.Format("Child\t= {0}", p.Family.Child));
}
Console.ReadKey();