生成带有xml内容的zip文件

时间:2015-11-19 19:11:55

标签: c# xml xmldocument zipfile

我想动态生成一个xml文件并将其压缩成zip文件。

我需要使用XmlDocument和Ionic库(用于压缩)。

我可以理解ZipFile.AddEntry方法应该执行此任务,但由于某种原因,生成的xml文件在zip文件中包含空内容。如果不是将其发送到MemoryStream而是将其保存在磁盘上,我可以看到xml节点。

任何想法,我做错了什么?

        MemoryStream memoryStream = new MemoryStream();

        XmlDocument xmlDoc = new XmlDocument();
        XmlNode rootNode = xmlDoc.CreateElement("users");
        xmlDoc.AppendChild(rootNode);

        XmlNode userNode = xmlDoc.CreateElement("user");
        XmlAttribute attribute = xmlDoc.CreateAttribute("age");
        attribute.Value = "42";
        userNode.Attributes.Append(attribute);
        userNode.InnerText = "John";
        rootNode.AppendChild(userNode);

        userNode = xmlDoc.CreateElement("user");
        attribute = xmlDoc.CreateAttribute("age");
        attribute.Value = "39";
        userNode.Attributes.Append(attribute);
        userNode.InnerText = "Jen";
        rootNode.AppendChild(userNode);

        //if (File.Exists(@"c:\temp\Teste\z.xml")) {
        //    File.Delete(@"c:\temp\Teste\z.xml");
        //}
        //xmlDoc.Save(@"c:\temp\Teste\z.xml"); -- it works


        xmlDoc.Save(memoryStream);

        if (File.Exists(@"c:\temp\Teste\z.zip")) {
            File.Delete(@"c:\temp\Teste\z.zip");
        }

        using (ZipFile zip = new ZipFile(@"c:\temp\Teste\z.zip")) {
            //zip.AddFile(@"C:\Temp\a.txt"); -- it works
            zip.AddEntry("z.xml", memoryStream);
            zip.Save();
        }

感谢。

0 个答案:

没有答案