我有一个我存储在列表中的课程。
我序列化了......
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并发现它是空的,但是该集合有一个对象。
有关为什么会发生这种情况的任何想法?
答案 0 :(得分:8)
是 - 您要保存到内存流,将其保留在结尾。你需要用以下方式“回放”它:
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);
}