数据集XML序列化到内存流

时间:2013-04-12 08:12:47

标签: .net xml-serialization

我有一个强类型的DataSet和一个用xsd.exe生成的相应类。

我想通过XML序列化/反序列化将DataSet内容传递给匹配的类。

如果我使用类似的东西:

MyStronglyTypedDataSet ds = new MyStronglyTypedDataSet();
//... fill the dataset...
ds.WriteXml(@"C:\Temp\somedata.xml");

FileStream fs = new FileStream(@"C:\Temp\somedata.xml", FileMode.Open);
XmlSerializer serial = new XmlSerializer(typeof(MyDataSetMatchingClass));
MyDataSetMatchingClass myObj = (MyDataSetMatchingClass)serial.Deserialize(fs);

一切正常,但我不想使用临时文件,所以我尝试了:

MyStronglyTypedDataSet ds = new MyStronglyTypedDataSet();
//... fill the dataset...
MemoryStream dump = new MemoryStream();
ds.WriteXml(dump);

XmlSerializer serial = new XmlSerializer(typeof(MyDataSetMatchingClass));
MyDataSetMatchingClass myObj = (MyDataSetMatchingClass)serial.Deserialize(dump);

但是反序列化器抱怨缺少root XML节点。任何人都知道一种方法告诉XmlWriter追加根节点,或者反序列化器忽略缺少的根节点或任何其他解决方案吗?

1 个答案:

答案 0 :(得分:2)

您没有回放信息流。这是一个非常常见的问题(请参阅How many ways can you mess up IO? - 查找“缓存内存中的数据时的问题”)。设置:

dump.Position = 0;
写入(序列化)和读取(反序列化)之间的