gpt4 book ai didi

c# - 使用 XmlSerializer.Deserialize 从 MemoryStream 反序列化 XML 文件不起作用

转载 作者:行者123 更新时间:2023-11-30 20:08:52 25 4
gpt4 key购买 nike

我在从 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);
}
}

我有一个包含 xml 文件的 MemoryStream ms。如果我尝试将该流反序列化为 MyXmlFile 类型的对象,则会出现异常“XML 文档 (0,0) 中存在错误”

MyXmlFile test = XmlSerializeObject.FromStream<MyXmlFile>(ms);

但是我验证了我的 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"));

我自己找不到解决方案,这就是我决定发布问题的原因。也许有人以前遇到过同样的问题并且能够帮助我。

提前致谢。如果有任何不清楚的地方,请询问。

最佳答案

如果您在调用反序列化之前实例化了内存流(例如,首先将 XML 加载到内存流中),则可能是它位于错误的索引处。尝试

ms.Seek(0, SeekOrigin.Begin)

回到流的开头。

关于c# - 使用 XmlSerializer.Deserialize 从 MemoryStream 反序列化 XML 文件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6626064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com