C#中XML序列化和反序列化初探

C#XML序列化和反序列化初探

 

这里是一个Demo,简单实现了C#中对象的XML序列化技术。

首先,我们定义一个需要序列化的对象:

using System;

namespace XMLSerializer

{

       /// <summary>

       /// 测试类

       /// </summary>

       public class TestXML

       {

              public string name;

              public string sex;

              public string age;

       }

}

然后我们就可以在程序中使用这个类构造对象,对其序列化到XML文档。

 

private void button1_Click(object sender, System.EventArgs e)

{

       TestXML a = new TestXML();

       a.name = tbName.Text;

       a.sex = tbSex.Text;

       a.age = tbAge.Text;

 

       SaveFileDialog of = new SaveFileDialog();

       of.Filter = " XML文档|*.XML";

       if( of.ShowDialog() == DialogResult.OK )

       {

              try

              {

                     Stream s = of.OpenFile();

 

                     new XmlSerializer( a.GetType() ).Serialize( s, a );

                     s.Close();

              }

              catch( Exception ex )

              {

                     MessageBox.Show( ex.Message );

              }

       }

}

 

 

最后,从XML文档中反序列化出对象

private void button2_Click(object sender, System.EventArgs e)

{

       OpenFileDialog o = new OpenFileDialog();

       o.Filter = " XML文档|*.XML|所有文件|*.*";

       if( o.ShowDialog() == DialogResult.OK )

       {

              try

              {

                     XmlSerializer xs = new XmlSerializer( typeof( TestXML ) );

                     Stream s = o.OpenFile();

                     TestXML a = xs.Deserialize( s ) as TestXML;

                      

                     tbName.Text = a.name;

                     tbSex.Text = a.sex;

                     tbAge.Text = a.age;

                     s.Close();

              }

              catch( Exception ex )

              {

                     MessageBox.Show( ex.Message );

              }

       }

}

 

 上述代码问题有点,异常情况下会造成资源释放不及时。[ Update on 2007-2-26 ]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值