【问题标题】:How to read compressed data in XML如何读取 XML 中的压缩数据
【发布时间】:2016-06-27 04:48:52
【问题描述】:

一个数据库有一个包含 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());
        }
    }

【问题讨论】:

    标签: c# .net xml base64 compression


    【解决方案1】:

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

    【讨论】:

    • 还尝试了其他方法来解压缩数据,但得到“GZip 标头中的幻数不正确。请确保您传递的是 GZip 流。”或一些不可读的文本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多