2013-12-11 9 views

risposta

10

Adattato dalle pagine di manuale ZipArchive e XmlSerializer.Deserialize().

La classe ZipArchiveEntry ha un metodo Open(), che restituisce un flusso al file.

string zipPath = @"c:\example\start.zip"; 

using (ZipArchive archive = ZipFile.OpenRead(zipPath)) 
{ 
    var sample = archive.GetEntry("sample.xml"); 
    if (sample != null) 
    { 
     using (var zipEntryStream = sample.Open()) 
     {    
      XmlSerializer serializer = new XmlSerializer(typeof(SampleClass)); 

      SampleClass deserialized = 
       (SampleClass)serializer.Deserialize(zipEntryStream); 
     } 
    } 
} 

Si noti che, as documented on MSDN, è necessario aggiungere un riferimento per l'assembly .NET System.IO.Compression.FileSystem al fine di utilizzare la classe ZipFile.

+0

Nota è necessario aggiungere un riferimento all'assembly System.IO.Compression.FileSystem per ottenere la classe ZipFile. – sammy34

+1

@sammy grazie, aggiornato. – CodeCaster