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

来源:互联网 发布:android反编译apk mac 编辑:程序博客网 时间:2024/05/03 03:03

假设我们有实体类:

    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();

 

原创粉丝点击