web-dev-qa-db-ja.com

XDocumentをストリームに変換

ディスクに何も保存せずに、XDocumentのXMLをMemoryStreamに変換するにはどうすればよいですか?

39
mickyjtwin

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);
    }
}
29
dtb

.NET 4以降では、それをMemoryStreamに保存できます。

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

.NET 3.5以前では、 dtbの回答 に示すように、XmlWriterに基づいてMemoryStreamを作成して保存する必要があります。

39
Jon Skeet
XDocument doc = new XDocument(
    new XElement(C_ROOT,
        new XElement("Child")));
using (var stream = new MemoryStream())
{
    doc.Save(stream);
    stream.Seek(0, SeekOrigin.Begin);
}
1
Saimon2k