将XDocument转换为Stream

mic*_*win 39 .net c# xml linq-to-xml

如何将XDocument中的XML转换为MemoryStream,而不将任何内容保存到磁盘?

Jon*_*eet 39

在.NET 4及更高版本中,您可以将其保存到MemoryStream:

Stream stream = new MemoryStream();
doc.Save(stream);
// Rewind the stream ready to read from it elsewhere
stream.Position = 0;
Run Code Online (Sandbox Code Playgroud)

在.NET 3.5及更早版本中,您需要创建一个XmlWriter基于a MemoryStream并保存到该文件,如dtb的答案所示.


dtb*_*dtb 29

看看XDocument.WriteTo方法; 例如:

using (MemoryStream ms = new MemoryStream())
{
    XmlWriterSettings xws = new XmlWriterSettings();
    xws.OmitXmlDeclaration = true;
    xws.Indent = true;

    using (XmlWriter xw = XmlWriter.Create(ms, xws))
    {
        XDocument doc = new XDocument(
            new XElement("Child",
                new XElement("GrandChild", "some content")
            )
        );
        doc.WriteTo(xw);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 或者.保存 - 但示例保留;-p (6认同)
  • @Daniel Fortunov:.Save提供了更多的重载,但所有这些最终都会调用.WriteTo (5认同)
  • @Marc WriteTo()和Save()有什么区别? (2认同)