C# 使用gzipstream将压缩的xml数据写入内存流

C# 使用gzipstream将压缩的xml数据写入内存流,c#,memorystream,xmlwriter,gzipstream,C#,Memorystream,Xmlwriter,Gzipstream,我试图将压缩的xml数据写入内存流。以下是我的测试控制台应用程序代码: var ms = new MemoryStream(); var gstream = new GZipStream(ms, CompressionMode.Compress); var settings = new XmlWriterSettings(); settings.Indent = true; var writer = XmlWriter.Create(gstream, settings); writer.Wr

我试图将压缩的xml数据写入内存流。以下是我的测试控制台应用程序代码:

var ms = new MemoryStream();
var gstream = new GZipStream(ms, CompressionMode.Compress);

var settings = new XmlWriterSettings();
settings.Indent = true;

var writer = XmlWriter.Create(gstream, settings);
writer.WriteStartElement("x", "root", "123");
writer.WriteStartElement("item");
writer.WriteAttributeString("xmlns", "x", null, "abc");
writer.WriteEndElement();
writer.WriteEndElement();            

Console.WriteLine("Data length: " + ms.ToArray().Length);

writer.Close();
gstream.Close();
ms.Close();    

Console.ReadLine();
输出为:

Data length: 0

我做错了什么?谢谢。

您必须关闭写入程序才能刷新流。只需将代码更改为:

writer.Close();
gstream.Close();
ms.Close();   

Console.WriteLine("Data length: " + ms.ToArray().Length);
它应该会起作用