您的位置:首页 > 其它

对象与XML,序列化与反序列化

2012-09-26 20:53 162 查看
假设我们有实体类:

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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: