2016-06-27 16 views
0

データベースには、XMLデータを含む列と、Base64でエンコードされたzipファイルを保持するCDATAセクションがあります。 XmlReaderを使用して、CDATAセクションから文字列を取得することができましたが、&のコードを解凍した後、解凍されたデータからnullが返されています。ヘルプしてくださいXMLで圧縮されたデータを読み取る方法

case XmlNodeType.CDATA: 

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

    string decoded = Unzip(base64EncodedBytes); 

    writer.WriteString("decoded:"+decoded); 
    break; 

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()); 
     } 
    } 

答えて

0

あなたはXMLを格納する列のデータ型は何ですか? XML列ですか? XMLで使用したエンコーディングは何ですか?何も指定しなければ、XMLはデフォルトでUTF8になります。しかし、SQL XML列はUTF-16を受け入れます。

+0

データ型は長いテキストで、エンコードされたUTF8です。 – Scar

+0

他の方法でデータを解凍しようとしましたが、「GZipヘッダーのマジックナンバーが正しくありません.GZipストリームを渡してください。」または読めないテキストがあります。 – Scar

関連する問題