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 ]