探讨:使用XMLSerialize 序列化与反序列化
探讨:使用XMLSerialize 序列化与反序列化
发布时间:2016-12-29 来源:查字典编辑
摘要:概念:XML序列化是将公共字段和属性转化为序列格式(这里指XML),以便存储或传输的过程。反序列化则是从XML中重新创建原始状态的对象.复制...

概念: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<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);

}

}

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新php教程学习
热门php教程学习
编程开发子分类