使用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); } }
- 使用XMLSerialize 序列化和反序列化
- 使用XMLSerialize 序列化与反序列化示例
- 序列和反序列化
- 序列和反序列化
- 使用XmlSerializer序列化和反序列化一个类
- [引用]C#如何使用序列化和反序列化
- 如何使用Gson序列化和反序列化
- 使用C#语言进行序列化和反序列化
- c#序列化和反序列化的详细使用
- 使用JSONObject 深度序列化和反序列化
- 使用DataContractJsonSerializer进行序列化和反序列化
- java序列化和反序列化使用总结
- hessian和xfire序列化反序列化使用注意
- 通过ObjectOutputStream序列化和使用ObjectInputStream反序列化
- php序列化和反序列化的简单使用
- 使用protoBuf进行序列化和反序列化
- Java序列化和反序列化使用总结
- 使用序列化和反序列化实现深拷贝
- AE入门教程及素材资料链接
- Spring 3.x各jar包的功能说明
- js中String转Array
- 从子页面获取父页面的值
- UITableview 去除滑动删除 编辑状态删除
- 使用XMLSerialize 序列化和反序列化
- Java Script
- ZOJ 3632 Watermelon Full of Water(单点更新,区间查询)
- 最近要学习dfb积累资料
- N皇后问题
- Java web开发学习规划
- 基于nginx的tomcat负载均衡和集群
- java判定数组或集合是否存在某个元素
- SQL 参数化示例