0

私のコードは以下の通りです

static void Main(string[] args)
    {
        string startPath = @"c:\Temp\att\";
        string xmlpath = @"c:\Temp\log\";
        var files = Directory.GetFiles(xmlpath, "*.*", SearchOption.AllDirectories)
        .Where(s => s.EndsWith(".xml"));

        foreach (string xml in files)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load(xml);
            XmlNodeList Xe = doc.SelectNodes("//FileDump/Message/Attachment");
            var Message_ID = doc.SelectSingleNode("//FileDump/Message/MsgID").InnerXml;
            foreach (XmlNode Xn in Xe)
            {
                var linkNode = Xn.SelectSingleNode("FileName");
                if (linkNode != null)
                {
                    string link = linkNode.InnerText.Trim();
                }
                string File_Name = Xn.SelectSingleNode("FileName").InnerXml;
                string File_ID = Xn.SelectSingleNode("FileID").InnerXml;


                //System.IO.File.Copy(curFile, msgsave, true);

                string msgsave = @"c:\Temp\ZIP\" + File_Name;
                string curFile = startPath + File_Name;
                string bbgfile = xmlpath + "MR_" + Message_ID + ".xml";
                string zipfilename = "MR_" + Message_ID + ".zip";
                string rkzip = System.IO.Path.Combine(@"C:\Temp\log\", zipfilename);

                try
                {

                    using (ZipFile zip = new ZipFile())
                    {
                        string zipFileName = System.IO.Path.Combine(@"C:\Temp\log\",  "MR_" + Message_ID + ".zip");
                        zip.AddFile(curFile, "");
                        zip.AddFile(bbgfile, "");
                        zip.Save(rkzip);
                    }

                }

問題は次のとおりです。FileNameには複数のファイルがあり、1つのファイルのみを圧縮します。コードをデバッグしようとしましたが、3つのファイルが表示されますが、圧縮されたファイルは1つだけです。誰かが私のコードの何が問題なのかを概説できますか? FileName は、xml ファイル内の添付ファイルのインジケータです。

4

2 に答える 2

0

はい、新しいzipファイルを作成し、前回を上書きしているため、最後の行の書き込みのみが表示されます。zip ファイルの作成と保存を外部に移動するか、 ZipFile.Openforeach (XmlNode Xn in Xe)を使用して既存の zip ファイルを開いて更新する必要があります。

于 2013-10-20T03:33:04.077 に答える