Convert XDocument to Stream

后端 未结 3 538
傲寒
傲寒 2020-12-05 09:32

How do I convert the XML in an XDocument to a MemoryStream, without saving anything to disk?

相关标签:
3条回答
  • 2020-12-05 09:56
    XDocument doc = new XDocument(
        new XElement(C_ROOT,
            new XElement("Child")));
    using (var stream = new MemoryStream())
    {
        doc.Save(stream);
        stream.Seek(0, SeekOrigin.Begin);
    }
    
    0 讨论(0)
  • 2020-12-05 09:59

    Have a look at the XDocument.WriteTo method; e.g.:

    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);
        }
    }
    
    0 讨论(0)
  • 2020-12-05 10:22

    In .NET 4 and later, you can Save it to a MemoryStream:

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

    In .NET 3.5 and earlier, you would need to create an XmlWriter based on a MemoryStream and save to that, as shown in dtb's answer.

    0 讨论(0)
提交回复
热议问题