Tho*_*ber 2 c# memorystream xml-deserialization
我无法从MemoryStream反序列化我的XML文件.我有一个生成的MyXmlFile类和一个包含XML文件的MemoryStream,我想将其反序列化为MyXmlFile类型的对象.
public static class XmlSerializeObject
{
public static T FromStream<T>(Stream s)
{
var serializer = new XmlSerializer(typeof(T));
return (T) serializer.Deserialize(s);
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个包含xml文件的MemoryStream ms.如果我尝试将该流反序列化为MyXmlFile类型的对象,我会得到一个异常"XML文档中存在错误(0,0)"
MyXmlFile test = XmlSerializeObject.FromStream<MyXmlFile>(ms);
Run Code Online (Sandbox Code Playgroud)
但是我确认我的MemoryStream是正确的.如果我首先将我的流写入光盘上的文件而不是再次读取该文件,它可以正常工作.
FileStream outStream = File.OpenWrite("D:\\p.xml");
outStream.Write(((MemoryStream)ms).ToArray(), 0, ((MemoryStream)ms).ToArray().Length);
outStream.Flush();
outStream.Close();
MyXmlFile test= XmlSerializeObject.FromStream<MyXmlFile>(File.OpenRead("D:\\p.xml"));
Run Code Online (Sandbox Code Playgroud)
我自己无法找到解决方案,这就是为什么我决定发布我的问题.也许有人之前有同样的问题,并能够帮助我.
提前致谢.如果有什么不清楚请问.
如果在调用反序列化之前实例化了内存流(比如,首先将XML加载到内存流中),那么它可能是错误的索引.尝试
ms.Seek(0, SeekOrigin.Begin)
Run Code Online (Sandbox Code Playgroud)
要回到流的开头.