您的位置:首页 > 其它

用XmlSerializer串行化(序列化)ArrayList数组对象与反序列化

2006-11-28 09:41 239 查看
刚才把经过xml串行化(序列化)的数组对象,输入进了数据库,然后再读取出来,反序列化为一个数组对象。成功了!!

整个过程只用了这么点代码,真是一气呵成的感觉。

学会了这一手技术,以后做对象的数据转移的时候又多了一种手段,哈哈!

PS:我发现写blog的时候Z-BLOG的tag功能很不人性化,找了半天,哈欠,应该再改一下。

简单的代码如下:

ArrayList aList = new ArrayList();
aList.Add("aaa");
aList.Add("bbb");
XmlSerializer ser = new XmlSerializer(typeof(ArrayList));
System.IO.MemoryStream mem = new MemoryStream();
XmlTextWriter writer = new XmlTextWriter(mem, Encoding.Default);
ser.Serialize(writer, aList);
writer.Close();

string strtmp=Encoding.Default.GetString(mem.ToArray());
MessageBox.Show(strtmp);
//看!这里串行为什么了,串行为一个xml了!!
//(www.dc9.cn版权所有)

XmlSerializer mySerializer = new XmlSerializer(typeof(ArrayList));
StreamReader mem2 = new StreamReader(new MemoryStream(System.Text.Encoding.Default.GetBytes(strtmp)), System.Text.Encoding.Default);
ArrayList myObject = (ArrayList)mySerializer.Deserialize(mem2);

MessageBox.Show(myObject[0].ToString());
//这里反序列化为对象,测试成功了!!
//(www.dc9.cn版权所有)

把他们函数化:序列化的函数

private string myXmlSerializer(object o)
{
XmlSerializer ser = new XmlSerializer(o.GetType());
System.IO.MemoryStream mem = new MemoryStream();
XmlTextWriter writer = new XmlTextWriter(mem, Encoding.Default);
ser.Serialize(writer, o);
writer.Close();
return Encoding.Default.GetString(mem.ToArray());
}
反序列化的函数

private object myXmlDeserialize(string s, Type t)
{
XmlSerializer mySerializer = new XmlSerializer(t);
StreamReader mem2 = new StreamReader(new MemoryStream(System.Text.Encoding.Default.GetBytes(s)), System.Text.Encoding.Default);
return mySerializer.Deserialize(mem2);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: