C#如何把一个数组对象转换成一个XML存入数据库中 (!答者有分!)

Jalan.Wang 2011-05-11 09:09:13
比如一个 object[] 我要把他转换成XmlSerializer 类型,再放入数据库字段中,再从数据库中读取出来,注意object[]是每一个元素是一个实体对象,读取出来的时候 要能转换成 之前的对象 ,
当然实现 的方法肯定有很多,请各位大哥大姐帮帮忙,只要能实现 什么方法都可以, 回答的人都有分,不够加分!
...全文
673 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxiju203 2011-05-11
  • 打赏
  • 举报
回复
你的对象应该要支持序列化才行~不支持的话就想办法让它支持。比如重新包装一下对象
雪饮 2011-05-11
  • 打赏
  • 举报
回复
楼主说的 实体对象是指obj里面存的是一些文件之类的东西吗?如果是,这里可以帮你……
http://blog.sina.com.cn/s/blog_6c0affba0100r2sk.html
连风 2011-05-11
  • 打赏
  • 举报
回复
对于Object[]的XML序列化,可以自定义序列化过程,
比如说:
1:先保存数组长度
2:对于每一个Object,先保存其AssemblyName(用于反序列化时的反射),再序列化其对象;

反序列化
1:先读取其长度
2:根据长度循环,读取其AssemblyName和序列化内容,然后反序列化该对象.
Jalan.Wang 2011-05-11
  • 打赏
  • 举报
回复
没人回答呢???
Jalan.Wang 2011-05-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 danjiewu 的回复:]
转换成XmlSerializer 类型?
就是指用XmlSerializer转成xml吧?这有什么问题吗?
[/Quote]

不知道怎么去实现了,能帮帮忙吗?
Jalan.Wang 2011-05-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lzyuan20 的回复:]
可以试试存成二进制
[/Quote]
XmlSerializer xml = new XmlSerializer(typeof(object[]));
using (MemoryStream stream = new MemoryStream())
{
try
{
xml.Serialize(stream, item.FZLR);
mbfl.fzlr = Encoding.UTF8.GetString(stream.GetBuffer(), 0, (int)stream.Length);
}catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
}

我在网上找了找, 这样写总会有异常,可能是我没理解,写的不对, 有谁能指点一二
danjiewu 2011-05-11
  • 打赏
  • 举报
回复
转换成XmlSerializer 类型?
就是指用XmlSerializer转成xml吧?这有什么问题吗?
lzyuan20 2011-05-11
  • 打赏
  • 举报
回复
可以试试存成二进制
Jalan.Wang 2011-05-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 gh_hgxhgx 的回复:]
楼主说的 实体对象是指obj里面存的是一些文件之类的东西吗?如果是,这里可以帮你……
http://blog.sina.com.cn/s/blog_6c0affba0100r2sk.html
[/Quote]
这位兄台, 你那是VB,我说的是C# 不过还是要给分的,嘿嘿
Jalan.Wang 2011-05-11
  • 打赏
  • 举报
回复

static void Main(string[] args)
{
//初使化数组元素
object[] o = Init().ToArray();
///
/// 此处可理解成:
/// 要转化的对象是什么类型,以转化格式的时候按此类型格式进行转化
Type type = o.GetType();
string path = @"C:\Users\wjl\Desktop\test.xml";
WriteXmlSerializer(type, o,path);
ReadeXmlSerializer(type,path);
}
/// <summary>
/// 读取XML,并将其转化成数组
/// </summary>
/// <param name="type"></param>
/// <param name="path"></param>
private static void ReadeXmlSerializer(Type type,string path)
{
string temp = "";
object[] o = new object[10];
//模拟读取数据库数据
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(fs, Encoding.UTF8);
temp = sr.ReadToEnd();

//将xml转成object[]
XmlSerializer xml = new XmlSerializer(type);
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(temp)))
{
try
{
o = (object[])xml.Deserialize(ms);
}
catch (Exception)
{
throw;
}
}
}
/// <summary>
/// 将数组转化成XML,
/// </summary>
/// <param name="type"></param>
/// <param name="o"></param>
/// <param name="path"></param>
private static void WriteXmlSerializer(Type type,object[] o,string path)
{
string temp = "";
XmlSerializer xml = new XmlSerializer(type);
using (MemoryStream stream = new MemoryStream())
{
try
{
xml.Serialize(stream, o);
temp = Encoding.UTF8.GetString(stream.GetBuffer(), 0, (int)stream.Length);
}
catch (Exception)
{
throw;
}
///模拟数据库存储
StreamWriter sw = new StreamWriter(path,false,Encoding.UTF8);
sw.Write(temp);
sw.Close();
}
}

Jalan.Wang 2011-05-11
  • 打赏
  • 举报
回复
问题 已经解决, 感谢大的的帮忙 ,各位有劳了!!!下面我将贴出我的代码 :

110,568

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧