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"]); }
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); }