gpt4 book ai didi

c# - "Root element not found"- 读取内存流时

转载 作者:数据小太阳 更新时间:2023-10-29 02:20:10 26 4
gpt4 key购买 nike

我有一个存储在列表中的类。

我连载它...

        XmlDocument xd = new XmlDocument();
MemoryStream ms = new MemoryStream();
XmlSerializer xm = new XmlSerializer(typeof(List<BugWrapper>));

xm.Serialize(ms, _bugs);
StreamReader sr = new StreamReader(ms);
string str = sr.ReadToEnd();
xd.Load(ms);

我查看了 str 并发现它是空的,但是该集合有一个对象。

对于为什么会发生这种情况有什么想法吗?

最佳答案

是的 - 您正在保存到内存流中,将其留在末尾。您需要“倒带”它:

ms.Position = 0;

就在您创建 StreamReader 之前:

xm.Serialize(ms, _bugs);
ms.Position = 0;
StreamReader sr = new StreamReader(ms);
string str = sr.ReadToEnd();

但是,您需要在加载到 XmlDocument 之前再次 倒回它,除非您删除最后两行,我怀疑它们只是为了调试。为了更好地衡量,让我们在完成后也关闭内存流:

using (MemoryStream stream = new MemoryStream())
{
XmlSerializer serializer = new XmlSerializer(typeof(List<BugWrapper>));
seralizer.Serialize(stream, _bugs);
stream.Position = 0;

XmlDocument doc = new XmlDocument();
doc.Load(stream);
}

关于c# - "Root element not found"- 读取内存流时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1798425/

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