使用XMLSerialize 序列化和反序列化

来源:互联网 发布:国密算法的优势 编辑:程序博客网 时间:2024/06/07 02:25

概念:XML序列化是将公共字段和属性转化为序列格式(这里指XML),以便存储或传输的过程。反序列化则是从XML中重新创建原始状态的对象.

 

    class SerializeDemo    {        static void Main()        {            EmployeeCollection employeeCollection = new EmployeeCollection()            {                Employees = Employeer.Employees()            };            XmlSerializer serialize = new XmlSerializer(typeof(EmployeeCollection));            string filePath = @"E:\PProject\Test\Employee.xml";             SerializeEmployee(serialize, filePath, employeeCollection);            DeserializeEmployee(serialize, filePath);        }        static void SerializeEmployee(XmlSerializer serialize, string filePath, EmployeeCollection employeeCollection)        {            using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))            {                serialize.Serialize(fs, employeeCollection);            }        }        static void DeserializeEmployee(XmlSerializer serialize,string filePath)        {            using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))            {                EmployeeCollection collection = (EmployeeCollection)serialize.Deserialize(fs);                collection.Employees.ForEach(e => Console.WriteLine("Name:{0},Gender:{1},Age:{2},Education:{3}", e.userName, e.gender, e.age, e.education));            }        }    }    [Serializable]    public class EmployeeCollection    {        public List<Employeer> Employees { get; set; }    }    [Serializable]    public class Employeer    {        public string userId { get; set; }        public string userName { get; set; }        public string gender { get; set; }        public int age { get; set; }        public List<WorkExperience> workExperience { get; set; }        public string education { get; set; }        public static List<Employeer> Employees()        {           return new List<Employeer>()           {                new Employeer()                 {                       userId = "0001",                    userName = "guoHu",                    gender="Man",                    age=25,education="underGraduate",                    workExperience = WorkExperience.GetWorkExperience("0001")                }           };                   }    }    [Serializable]    public class WorkExperience    {        public string userId { get; set; }        public string companyName { get; set; }        public string seniority { get; set; }                public static List<WorkExperience> GetWorkExperience(string userId)        {            List<WorkExperience> workExperience = new List<WorkExperience>();            Unity unity = Unity.GetInstance();            DataTable table = new DataTable();            unity.GetTable(out table);                        var experiences = (from experience in table.AsEnumerable()                               where experience.Field<string>("UserId") == userId                               select new                               {                                   companyName = experience.Field<string>("CompanyName"),                                   seniority = experience.Field<string>("Seniority")                               }).ToList();            experiences.ForEach(e => workExperience.Add(new WorkExperience() { companyName = e.companyName, seniority = e.seniority }));            return workExperience;        }    }    public class Unity    {        public static DataTable tables = new DataTable();        public static DataRow dr;        public static DataColumn dc = new DataColumn();        public static object objLock = new object();        public static Unity unityInstance;        private Unity()        {                }        public static Unity GetInstance()        {            if (unityInstance == null)            {                lock (objLock)                {                    if (unityInstance == null)                    {                        unityInstance = new Unity();                    }                }            }            return unityInstance;        }        public void GetTable(out DataTable dt)        {            unityInstance.CreateTable();                      dr = tables.NewRow();            dr["UserId"] = "0001";            dr["CompanyName"] = "WireSoft";            dr["Seniority"] = "2012.02-2012.05";            tables.Rows.Add(dr);            dr = tables.NewRow();            dr["UserId"] = "0001";            dr["CompanyName"] = "Jin Xun";            dr["Seniority"] = "2009.07-2011.02";            tables.Rows.Add(dr);            dr = tables.NewRow();            dr["UserId"] = "0002";            dr["CompanyName"] = "Hua Wei";            dr["Seniority"] = "2011.07-";            tables.Rows.Add(dr);            dt = tables.Copy();        }        public  void CreateTable()        {            dc = new DataColumn("UserId", System.Type.GetType("System.String"));            tables.Columns.Add(dc);            dc = new DataColumn("companyName", System.Type.GetType("System.String"));            tables.Columns.Add(dc);            dc = new DataColumn("seniority", System.Type.GetType("System.String"));            tables.Columns.Add(dc);        }    }


 

原创粉丝点击