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

    技术2022-05-11  60

    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)