A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 茹化肖 金牌黑马   /  2014-1-18 12:17  /  1170 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. 在 .NET Framework 中提供两种串行化方法,一种是二进制法,另一种是xml串行化。

  2.   

  3.    序列化是将对象状态转换为可保持或传输的格式的过程,xml序列化是将对象的公共字段和属性序列化为xml流。由于xml是一个开放式标准,因此对于通过web共享数据而言,这是一个很好的选择。

  4.    

  5.      将对象序列化,可以将对象状态永久保存在存储媒体上,以便可以在以后创建更精确的副本;同时,通过值可以将对象一个应用程序域发送到另一个应用程序域中。



  6.     xml序列化中最主要的类是XmlSerializer 类,它的最重要的方法是Serializer和Deserializer方法。使用xmlSerializer可以将以下几项序列化:公共类的公共读/写属性,字段; 实现ICollection或IEnumerable的类;xmlElement对象;xmlNode对象;Dataset对象。下面以一个很简单的例子演示一下:

  7.       首先导入命名空间:using System.Xml.Serialization;和using System.IO;并且创建一个student类:



  8.      
  9.         //创建一个公共类
  10.         public class Student
  11.         {
  12.             public string studentName = null;
  13.             public int studentAge = 0;
  14.             private decimal money = 0;

  15.             public decimal Money
  16.             {
  17.                 get { return money; }
  18.                 set { money = value; }
  19.             }

  20.         }

  21.      然后在主方法里序列化:











  22. static void Main()

  23.         {

  24.   //1.创建对象并赋值它的公共字段和属性。



  25.             Student st = new Student();

  26.             st.studentName = "李四“, st.studentAge = 20;



  27.       //2.使用该对象的类型构造 XmlSerializer



  28.             XmlSerializer myxml=new XmlSerializer(typeof(Student));



  29.      //3.创建一个StreamWriter对象



  30.             StreamWriter sw = new StreamWriter("student.xml");



  31.          //3.调用Serialize方法生成对象的XML流形式或文件形式。



  32.             myxml.Serialize(sw, st);

  33.             sw.Close();         }

  34. 序列化数组这里就不写了,有兴趣的可以一起讨论。



  35. 与xml序列化对应的是xml反序列化,这里我就用一个dataset实例说明序列化与反序列化:



  36. 首先序列化DataSet:



  37. DataSet ds=new DataSet();



  38. DataTable dt=new DataTable("st");



  39. DataColumn dc=new DataColumn("学号",typeof(int));

  40. dt.Columns.Add(dc);



  41. dc=new DataColumn("姓名",typeof(string));

  42. dt.Column.Add(dc);



  43. DataRow dr=dt.newRow();



  44. dr["学号"]=1001;  dr["姓名"]="小王";



  45. dt.Rows.Add(dr);



  46. ds.Table.Add(dt);



  47. xmlSerializer xs=new xmlSerializer(typeof(Dataset));



  48. TextWriterts tw=new StreamWriter("zw.xml");



  49. xs.Seralizer(tw,ds);







  50. 反序列化:



  51. DataSet ds=new DataSet();



  52. DataTable dt=new DataTaBle("st");



  53. ds.Tables.Add(dt);



  54. xmlserializer xs=new xmlserializer(typeof(DataSet));



  55. Filestream fs=new  FileStram("路径",FileMode.Open);



  56. ds=(DataSet)xs.DeSerializer(fs);



  57. for(int i=0;i<ds.Tables["st"].Rows.count;i++)

  58. {

  59.      Console.WriteLine(ds.Table["st"].Rows[i][""].Tostring());

  60. }









  61. public class Student

  62.     {

  63.       public string studentName;

  64.       public int studentAge;

  65.    }
复制代码


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马