static public Boolean SerializeToXML(gastosPersonales data, string ruta)
        {
            try
            {
                XmlSerializer serializer = new XmlSerializer(typeof(gastosPersonales));
                TextWriter    textWriter = new StreamWriter(@ruta);
                serializer.Serialize(textWriter, data);
                textWriter.Close();
                return(true);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());

                return(false);
            }
        }
        public Boolean GuardarXml()
        {
            try
            {
                int     controlaRuta = 1;
                int     secuencia    = 0;
                string  rut          = "";
                int     error        = 0;//lo uso para ver si encontro algun error al momento de comparacion del xsd y el xml
                Boolean retorna      = true;

                gastosPersonales DataGastos = new gastosPersonales();
                List <ro_empleado_gastos_perso_Info> EGPError = new List <ro_empleado_gastos_perso_Info>();

                //pasa el archivo de la base de datos hacia una variable con el mismo tipo
                paraminfo = new List <ro_Config_Rubros_ParametrosGenerales_Info>(parambus.ObtenerParamGenerales());
                foreach (var item2 in paraminfo)
                {
                    if (item2.IdTipoParametro == "FILEXSD107")
                    {
                        XSD = item2.File;
                    }
                }


                foreach (var item in xmlinfoGastosPersonales)
                {
                    if (item.check == true)
                    {
                        //DataGastos = CargaDatos();
                        string ruta = "";
                        DataGastos = empBus.Get_GastosPersonales_x_Empleado(param.IdEmpresa, item.IdEmpleado, item.Anio_fiscal);
                        string Nombre = "AGP" + item.Anio_fiscal + item.Num_Identificacion + ".xml";
                        saveFileDialog1 = new SaveFileDialog();
                        //saveFileDialog1.FileName = Nombre;
                        saveFileDialog1.FileName         = "Archivos";
                        saveFileDialog1.Filter           = "Todos los archivos (*.xml)|*.xml";
                        saveFileDialog1.InitialDirectory = @direcDoc;

                        //Obtener Ruta de Carpetas
                        if (controlaRuta == 1)
                        {
                            if (saveFileDialog1.ShowDialog() == DialogResult.Cancel)
                            {
                                retorna = false;
                                break;
                            }

                            System.IO.DirectoryInfo s = new DirectoryInfo(saveFileDialog1.FileName);
                            rut = s.Parent.FullName;
                            controlaRuta++;
                        }

                        ruta = rut + "\\" + Nombre;

                        if (File.Exists(ruta))
                        {
                            File.Delete(ruta);
                        }

                        if (SerializeToXML(DataGastos, ruta))
                        {
                            ////progressBar1.Value = 100;

                            if (XSD != null)
                            {
                                string msg = "";
                                if (XSD == null)
                                {
                                    MessageBox.Show("No puede realizar la validacón del xml con el XSD, debido a que el archivo XSD no se ha ingresado.. \nIngréselos desde la pantalla de parámetros Cuentas por Pagar,o comuníquese con sistemas", "SISTEMA", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                }
                                else
                                {
                                    if (!validaXmlConXsd(ruta, XSD, ref msg))
                                    {
                                        secuencia++;
                                        ro_empleado_gastos_perso_Info infoError = new ro_empleado_gastos_perso_Info();
                                        infoError.Secuencia   = secuencia;
                                        infoError.RutaArchivo = ruta;
                                        infoError.Error       = msg;
                                        EGPError.Add(infoError);
                                        error++;
                                    }
                                    //MessageBox.Show("Archivo AGP XML generado en la ruta:" + ruta + ", pero tiene los Siguientes errores:\n " + msg, "Errores en Validación con XSD", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                    //else
                                    //    MessageBox.Show("Archivo AGP XML generado correctamente en la ruta:" + ruta, "SISTEMA", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                }
                            }
                            else
                            {
                                MessageBox.Show("Archivo AGP XML generado en la ruta:" + ruta + "\n No se realizo la validación XSD no ingresado", "SISTEMA", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            }
                        }
                        else
                        {
                            //progressBar1.Value = 0;
                            MessageBox.Show("Ocurrio un inconveniente al guardar el archivo AGP XML", "SISTEMA", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }

                        //StreamReader sr = new StreamReader(saveFileDialog1.FileName, System.Text.Encoding.Default);
                        //this.richTextBox1.Text = sr.ReadToEnd();
                    }
                }
                if (error >= 1)
                {
                    MessageBox.Show("Se han detectado errores", "SISTEMA", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    frmRo_Empleado_Gastos_Personales_Cons_Xml errorForm = new frmRo_Empleado_Gastos_Personales_Cons_Xml();
                    errorForm.SETINFO_ = EGPError;
                    errorForm.Show();
                }
                //else
                //{
                //    MessageBox.Show("Archivos Almacenados Correctamente", "Operación Correcta");
                //}
                return(retorna);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                Log_Error_bus.Log_Error(ex.Message); return(false);
            }
        }