Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将XDocument转换为流_C#_.net_Xml_Linq To Xml - Fatal编程技术网

C# 将XDocument转换为流

C# 将XDocument转换为流,c#,.net,xml,linq-to-xml,C#,.net,Xml,Linq To Xml,如何将XDocument中的XML转换为MemoryStream,而不将任何内容保存到磁盘?看看这个方法;e、 g: using (MemoryStream ms = new MemoryStream()) { XmlWriterSettings xws = new XmlWriterSettings(); xws.OmitXmlDeclaration = true; xws.Indent = true; using (XmlWriter xw = XmlWri

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

看看这个方法;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);
    }
}

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

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

在.NET 3.5及更早版本中,您需要基于
MemoryStream
创建一个
XmlWriter
,并保存到其中,如中所示。

或.save-但该示例适用-p@MarcWriteTo()和Save()之间有什么区别?@Daniel Fortunov:.Save提供了更多重载,但所有这些重载最终都会调用。WriteTo我想知道这两种方法是否都添加了\r\n和空白。在这里有一个简单的选项(而不是让现有的XmlWriter过载)会很好
XDocument doc = new XDocument(
    new XElement(C_ROOT,
        new XElement("Child")));
using (var stream = new MemoryStream())
{
    doc.Save(stream);
    stream.Seek(0, SeekOrigin.Begin);
}