php xml序列化,探讨:使用XMLSerialize 序列化与反序列化

概念: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 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 { get; set; }

public string education { get; set; }

public static List Employees()

{

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 GetWorkExperience(string userId)

{

List workExperience = new List();

Unity unity = Unity.GetInstance();

DataTable table = new DataTable();

unity.GetTable(out table);

var experiences = (from experience in table.AsEnumerable()

where experience.Field("UserId") == userId

select new

{

companyName = experience.Field("CompanyName"),

seniority = experience.Field("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);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值