Search code examples
c#.netxmlzipdotnetzip

Extract only XML files from a zip using DotNetZip


I want to extract all XML files in the archive, I am using DotNetZip in extracting files.

In the Documentation of DotNetZip this is the example:

using (ZipFile zip = ZipFile.Read(zipArchiveName))
{
  zip.ExtractSelectedEntries("name = *.xml  and  mtime > 2009-01-15");
}

this is my method:

private void processButton_Click(object sender, EventArgs e)
{
    string uniquePath = string.Format(@"C:\{0}", Guid.NewGuid());
    System.IO.Directory.CreateDirectory(uniquePath);
    using (ZipFile zip = ZipFile.Read(textBox1.Text))
    {
        zip.ExtractSelectedEntries("name = *.xml");
    }
}

but it extracts nothing. How can I extract all xml files using DotNetZip, thanks for your help.


Solution

  • Set uniquePath to current directory,

    string uniquePath = string.Format(@"C:\{0}", Guid.NewGuid());
    System.IO.Directory.CreateDirectory(uniquePath);
    using (ZipFile zip = ZipFile.Read(textBox1.Text))
        {
            System.IO.Directory.SetCurrentDirectory(uniquePath);
            zip.ExtractSelectedEntries("name = *.xml",,ExtractExistingFileAction.OverwriteSilently);
        }
    

    Or use,

    var collections=zip.SelectEntries("name=*.xml");
    foreach (var t in collections )
    {
     t.Extract(uniquePath,ExtractExistingFileAction.OverwriteSilently);
     }