如何在 C# 中直接读取 ZIP 文件中的 XML 文件?

Dav*_*len 3 .net c# xml zip

在 Java 中,您可以传递类似“zip:zip_file!xml_file”的 url,它将使用 zip 文件内指定的 XML 文件。XmlUrlResolver 没有此功能。有没有办法做到这一点?

ryb*_*ber 5

这是我使用 ICSharpCode.SharpZipLib 的一些代码:

public bool Process()
    {
        var importFile = new FileInfo("c:\\foo\myzip.zip");
        var success = true;
        using (var zipStream = new ZipInputStream(importFile.OpenRead()))
        {
            ZipEntry theEntry;
            while ((theEntry = zipStream.GetNextEntry()) != null)
            {
                var lowerName = theEntry.Name.ToLower();

                try
                {

                    if (lowerName.EndsWith(".xml") && !lowerName.StartsWith("__macosx"))
                    {

                        var doc = new XmlDocument();
                        doc.Load(zipStream);
                    }
                }
                catch (Exception e)
                {
                    success = false;
                    Log.Error(string.Format("Error parsing {0} ERROR {1}",lowerName,e.Message));
                }

            }
        }
        return success;
    }
Run Code Online (Sandbox Code Playgroud)

这会处理 zip 中的每个 xml 文件...除了突然出现的愚蠢的 Mac OsX 元文件:)