类为大家出示了自身目标串行通信化(Serialize)和反串行通信化(Deserialize)的的方式,该类能够编码序列化的內容: 公共性类的公共性读写能力字段名或是特性 XmlElement目标 XmlNode目标 Datet目标 完成了Icollection 或IEnumerable的类 该类先在有一个设计方案要求: 必须被编码序列化的类要出示一个空主要参数的结构涵数,不然运作时候出現出现异常 在全过程中将会会出现许多地区要采用目标和XML互相转换,在此出示一个通用性的类,出示泛种类的适用。 该类出示双方法,一个是以实体线到回到XML标识符串的方式,一个是把XML标识符串装成目标实体线的方式。下边大家看来看这一类是如何用的。 最先建2个类USer和Users,User检测一个实体线的编码序列化和反编码序列化,USers检测一个List结合编码序列化和反编码序列化。留意这2个类都标明了[Serializable]特点,而且出示了空主要参数的结构涵数。 1 [Serializable] 2 public class User 4 public int ID { ; set; } 5 public string Name { get; set; } 6 public string Add { get; set; } 7 public int Age { get; set; } 10 public User() 12 this.ID = default(int); 13 this.Name = default(string); 14 this.Add = default(string); 15 this.Age = default(int); 18 } [Serializable] public class Users public List User Datas { get; set; } public Users() this.Datas=new List User (); }下边大家建一个网页页面Default.x,在这里个网页页面中大家检测编码序列化,出示2个按键和2个TextBox,来各自显示信息单独实体线的编码序列化和List结合的编码序列化。 编码 form id= form1 runat= div asp:Button ID= Button1 runat= Text= 一个目标编码序列化 onclick= Button1_Click / br / asp:TextBox ID= TextBox1 runat= server Width= 100% Height= 200 /asp:TextBox br / asp:Button ID= Button2 runat= server Text= 好几个目标编码序列化 onclick= Button2_Click / br / asp:TextBox ID= TextBox2 runat= server Width= 100% Height= 200 /asp:TextBox br / /div /form后台管理编码的完成: 编码 /// summary /// 一个目标编码序列化 /// /summary /// param name= sender /param /// param name= e /param protected void Button1_Click(object sender, EventArgs e) User user = new User() { ID=1001,Name= 小赵 ,Add= 北京市 ,Age=21}; var str = SHelper.SaveXmlFromObj User (user); this.TextBox1.Text = str; /// summary /// 好几个目标编码序列化 /// /summary /// param name= sender /param /// param name= e /param protected void Button2_Click(object sender, EventArgs e) Users users = new Users(); User user = new User() { ID = 1001, Name = 小赵 , Add = 北京市 , Age = 21 }; users.Datas.Add(user); users.Datas.Add(user); users.Datas.Add(user); var str = SHelper.SaveXmlFromObj Users (users); this.TextBox2.Text = str; }编码序列化結果以下: 单目标: ? version= 1.0 ? User xmlns:xsi= 2001/XMLSchema-instance xmlns:xsd= 2001/XMLSchema ID 1001 /ID Name 小赵 /Name Add 北京市 /Add Age 21 /Age /User List结合: ?xml version= 1.0 ? Users xmlns:xsi= 2001/XMLSchema-instance xmlns:xsd= 2001/XMLSchema Datas User ID 1001 /ID Name 小赵 /Name Add 北京市 /Add Age 21 /Age /User User ID 1001 /ID Name 小赵 /Name Add 北京市 /Add Age 21 /Age /User User ID 1001 /ID Name 小赵 /Name Add 北京市 /Add Age 21 /Age /User /Datas /Users 下边大家来检测反编码序列化: 最先建一个service,写2个检测方式: ![]() ![]() [WebMethod] public string GetObjFromXml(string data) var obj = SHelper.LoadObjFromXML User (data); if (obj != null) { return obj.Name; } else { return 传到数据信息错误 ; } [WebMethod] public string GetObFromXml(string data) var obj = SHelper.LoadObjFromXML Users (data); if (obj != null) string returnstr = ; foreach (User user in obj.Datas) returnstr += user.Name + \n ; return returnstr; else { return 传到数据信息错误 ; } }编译程序后运作,大家用刚刚编码序列化出去的标识符串贴出来主要参数值部位便可以检测反编码序列化的方式,在此已不详细描述,有兴趣爱好的朋友能够把案例编码运作。 ![]() |