示例#1
0
        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());
            }
        }
示例#2
0
 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);
 }