2016-06-27 12 views
0

Eine Datenbank enthält eine Spalte mit XML-Daten und einen CDATA-Abschnitt mit einer Base64-codierten Zip-Datei. Mit XmlReader konnte ich eine Zeichenfolge aus dem CDATA-Abschnitt abrufen, aber nachdem ich die Zeichenfolge mit dem Code dekomprimiert habe, bekomme ich null von den dekomprimierten Daten. HilfeKomprimierte Daten in XML lesen

case XmlNodeType.CDATA: 

    string base64EncodedData = xreader.Value; 
    var base64EncodedBytes = Convert.FromBase64String(base64EncodedData);//convert to bytes 

    string decoded = Unzip(base64EncodedBytes); 

    writer.WriteString("decoded:"+decoded); 
    break; 
bitte
public static string Unzip(byte[] bytes) 
    { 
     using (var msi = new MemoryStream(bytes)) 
     using (var mso = new MemoryStream()) 
     { 
      using (var gs = new GZipStream(msi, CompressionMode.Decompress)) 
      { 
       try { gs.CopyTo(mso); } 
       catch { Console.Write("failed"); } 
       //CopyTo(gs, mso); 
      } 

      return Encoding.UTF8.GetString(mso.ToArray()); 
     } 
    } 

Antwort

0

Was ist der Datentyp der Spalte, wo Sie die xml speichern? ist es eine XML-Spalte? Was ist die Codierung, die Sie in XML verwendet haben? Wenn nichts angegeben wird, wird das XML standardmäßig UTF8. Die SQL XML-Spalte akzeptiert UTF-16.

+0

Der Datentyp ist Langtext, codiert UTF8. – Scar

+0

Probierte auch andere Möglichkeiten, um Daten zu dekomprimieren, aber bekam "Die magische Zahl in GZip-Header ist nicht korrekt. Stellen Sie sicher, dass Sie in einem GZip-Stream übergeben." oder irgendein unlesbarer Text. – Scar