如何读取XML中的压缩数据

时间:2016-06-27 04:48:53

标签: c# .net xml base64 compression

数据库有一个包含XML数据的列和一个包含Base64编码的zip文件的CDATA部分。使用XmlReader,我能够从CDATA部分获得一个字符串,但是在解码之后用代码解压缩字符串,我从解压缩的数据中得到null。请帮忙

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

1 个答案:

答案 0 :(得分:0)

存储xml的列的数据类型是什么?是XML列吗?您在XML中使用的编码是什么?如果没有指定任何内容,XML将默认为UTF8。但SQL XML列接受UTF-16。