xml序列化

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

  

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

    

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

 

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

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

 

    
        //创建一个公共类
        public class Student
        {
            public string studentName = null;
            public int studentAge = 0;
            private decimal money = 0;

            public decimal Money
            {
                get { return money; }
                set { money = value; }
            }

        }

     然后在主方法里序列化:

 

 

static void Main()

        { 

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

            Student st = new Student();

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

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

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

     //3.创建一个StreamWriter对象

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

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

            myxml.Serialize(sw, st);

            sw.Close();         }

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

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

首先序列化DataSet:

DataSet ds=new DataSet();

DataTable dt=new DataTable("st");

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

dt.Columns.Add(dc);

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

dt.Column.Add(dc);

DataRow dr=dt.newRow();

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

dt.Rows.Add(dr);

ds.Table.Add(dt);

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

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

xs.Seralizer(tw,ds);

反序列化:

DataSet ds=new DataSet();

DataTable dt=new DataTaBle("st");

ds.Tables.Add(dt);

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

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

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

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

{

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

}

 public class Student

    {

      public string studentName; 

      public int studentAge;

   }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值