从内存流问题加载Xml

时间:2011-09-18 14:00:32

标签: c# .net xml stream

这是我的代码:

MemoryStream xmlStream = new MemoryStream();
XmlDocument xmlDoc = new XmlDocument();
XmlWriter xmlWriter = XmlWriter.Create(xmlStream);

//Add some elements and attributes.

xmlWriter.WriterEndDocument();
xmlWriter.Flush();
xmlWriter.Close();

好的,既然我已经关闭了XmlWriter,有没有办法再次访问XmlStream?

如果我不关闭,那么当我想使用xmlDoc.Load(xmlStream)时,它会出现一个异常,说“Root Element is missing”

4 个答案:

答案 0 :(得分:5)

如果不关闭流,可以将Position属性设置为0以返回到开始,然后创建一个XmlReader来读回流,或者在尝试时使用XmlDocument.Load。

总结一下,删除xmlWriter.Close()然后调用xmlStream.Position = 0,然后调用xmlDoc.Load(xmlStream)

答案 1 :(得分:4)

不是一个流 - 但你可以获得数据。

MemoryStream.ToArray即使在您关闭它之后也能正常工作。

答案 2 :(得分:1)

不,如果您想进一步访问基础流,则不应关闭XmlWriter,因为关闭它实际上意味着关闭基础流。完成后,您可以使用以下方式处理流:

xmlStream.Dispose();

答案 3 :(得分:1)

不,您不能再访问已处置(已关闭)的对象(流)。