public static byte[] DatasetToXML(DataSet DS) { using (MemoryStream memstream = new MemoryStream()) { string InFile = null; string OutFile = null; try { if (ConfigurationManager.AppSettings["CompressDatasets"] == "1") { InFile = Path.GetTempFileName(); OutFile = Path.GetTempFileName(); DS.WriteXml(InFile, XmlWriteMode.WriteSchema); CompressionUtils.CompressFile(InFile, OutFile); using (FileStream filestream = new FileStream(OutFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { try { byte[] buffer = Encoding.Default.GetBytes(CompressionUtils.COMPRESSION_SIGNATURE); memstream.Write(buffer, 0, buffer.Length); buffer = new byte[filestream.Length]; filestream.Read(buffer, 0, buffer.Length); memstream.Write(buffer, 0, buffer.Length); } finally { filestream.Close(); } } } else { DS.WriteXml(memstream, XmlWriteMode.WriteSchema); } } finally { memstream.Close(); try { if (!String.IsNullOrEmpty(InFile)) { File.Delete(InFile); } } catch {} try { if (!String.IsNullOrEmpty(OutFile)) { File.Delete(OutFile); } } catch {} } return(memstream.ToArray()); } }
public static byte[] StringToXML(string s) { byte [] result; if (ConfigurationManager.AppSettings["CompressDatasets"] == "1") { // El sistema está configurado para utilizar compresión string InFile = null; string OutFile = null; try { InFile = Path.GetTempFileName(); OutFile = Path.GetTempFileName(); using (StreamWriter streamwriter = new StreamWriter(InFile)) { try { streamwriter.Write(s); } finally { streamwriter.Close(); } } CompressionUtils.CompressFile(InFile, OutFile); List <byte> list = new List <byte>(); list.AddRange(Encoding.Default.GetBytes(CompressionUtils.COMPRESSION_SIGNATURE)); using (FileStream filestream = new FileStream(OutFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { try { byte[] buffer = new byte[filestream.Length]; filestream.Read(buffer, 0, buffer.Length); list.AddRange(buffer); } finally { filestream.Close(); } } result = list.ToArray(); } finally { try { if (!String.IsNullOrEmpty(InFile)) { File.Delete(InFile); } } catch {} try { if (!String.IsNullOrEmpty(OutFile)) { File.Delete(OutFile); } } catch {} } } else { result = Encoding.Default.GetBytes(s); } return(result); }