示例#1
0
        private XmlElement descomprimirDatos(XmlElement propiedades, CompressionAlgorithm descompresor)
        {
            string textoComprimido = propiedades.InnerText;

            byte[] datosComprimidos = Convert.FromBase64String(textoComprimido);

            System.IO.MemoryStream stream             = new MemoryStream(datosComprimidos);
            System.IO.Stream       streamDescompresor = null;

            switch (descompresor)
            {
            case CompressionAlgorithm.Deflate:
                streamDescompresor = new System.IO.Compression.DeflateStream(stream, System.IO.Compression.CompressionMode.Decompress);
                break;

            case CompressionAlgorithm.Gzip:
                streamDescompresor = new System.IO.Compression.GZipStream(stream, System.IO.Compression.CompressionMode.Decompress);
                break;

#if LZMAPRESENT
            case CompressionAlgorithm.LZMA:
                streamDescompresor = new System.IO.Compression.LzmaStream(stream, System.IO.Compression.CompressionMode.Decompress);
                break;
#endif
            default:
                streamDescompresor = new System.IO.Compression.DeflateStream(stream, System.IO.Compression.CompressionMode.Decompress);
                break;
            }

            int    contador = 1;
            byte[] datosLeidos;
            int    leido;
            do
            {
                datosLeidos = new byte[2097152 * contador];
                leido       = streamDescompresor.Read(datosLeidos, 0, datosLeidos.Length);
                contador++;
            } while (leido == datosLeidos.Length - 1);


            string textoDescomprimido = System.Text.Encoding.Default.GetString(datosLeidos, 0, leido);

            propiedades.InnerXml = textoDescomprimido;
            return(propiedades["properties"]);
        }
示例#2
0
        private XmlNode comprimirDatos(XmlElement propiedades, CompressionAlgorithm compresor)
        {
            string valor = propiedades.OuterXml;

            System.IO.MemoryStream stream          = new MemoryStream(valor.Length);
            System.IO.Stream       streamCompresor = null;

            switch (compresor)
            {
            case CompressionAlgorithm.Deflate:
                streamCompresor = new System.IO.Compression.DeflateStream(stream, System.IO.Compression.CompressionMode.Compress);
                break;

            case CompressionAlgorithm.Gzip:
                streamCompresor = new System.IO.Compression.GZipStream(stream, System.IO.Compression.CompressionMode.Compress);
                break;

#if LZMAPRESENT
            case CompressionAlgorithm.LZMA:
                streamCompresor = new System.IO.Compression.LzmaStream(stream, System.IO.Compression.CompressionMode.Compress);
                break;
#endif
            default:
                streamCompresor = new System.IO.Compression.DeflateStream(stream, System.IO.Compression.CompressionMode.Compress);
                break;
            }


            byte[] datos = System.Text.Encoding.Default.GetBytes(valor);
            streamCompresor.Write(datos, 0, datos.Length);
            streamCompresor.Close();

            byte[] datosComprimidos = stream.ToArray();
            stream.Close();

            //  XmlElement propiedades = documento.CreateElement("properties");
            propiedades.InnerText = Convert.ToBase64String(datosComprimidos);

            return(propiedades);
        }