探讨:使用XMLSerialize 序列化与反序列化
发布时间:2020-12-13 06:21:26 所属栏目:PHP教程 来源:网络整理
导读:XML序列化是将公共字段和属性转化为序列格式(这里指XML),以便存储或传输的过程。反序列化则是从XML中重新创建原始状态的对象. 代码如下: class SerializeDemo { static void Main() { EmployeeCollection employeeCollection = new EmployeeCollection()
XML序列化是将公共字段和属性转化为序列格式(这里指XML),以便存储或传输的过程。反序列化则是从XML中重新创建原始状态的对象. 代码如下: class SerializeDemo { static void Main() { EmployeeCollection employeeCollection = new EmployeeCollection() { Employees = Employeer.Employees() }; XmlSerializer serialize = new XmlSerializer(typeof(EmployeeCollection)); string filePath = @"E:PProjectTestEmployee.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 } [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 public string education { get; set; } public static List { return new List { 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 { List Unity unity = Unity.GetInstance(); DataTable table = new DataTable(); unity.GetTable(out table); var experiences = (from experience in table.AsEnumerable() where experience.Field select new { companyName = experience.Field seniority = experience.Field }).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); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |