AYUDA: XmlSerializer bastante lento. VB/C#
Publicado: Sab Abr 22, 2017 8:21 pm
Bueno amigos, les comento mi situacion, estoy desarrollando un software para la facturacion v3.3 en MVC de ASP.NET y tuve problemas para compilar la clase cfdv33.cs desde el archivo cfdv.xsd y vine a encontrar la solucion nada mas y nada menos que en este foro, ahora me ecuentro en un nuevo problema y no he encontrado informacion al respecto por ningun lado a excepcion de otra persona que tiene el mismo problema pero en VB, escribo este nuevo tema con la esperanza de que puedan ayudarme, les explico:
Una vez que lleno el objeto del tipo Comprobante, al momento de inicializar una nueva instancia del XmlSerializer tarda 5 minutos! y posteriormente al momento de serializar el objeto Comprobante en un archivo XML tarda 2 minutos! y esto de verdad es bastante tiempo, espero y puedan ayudarme de verdad lo agradeceria mucho. Anexo mi codigo:
Una vez que lleno el objeto del tipo Comprobante, al momento de inicializar una nueva instancia del XmlSerializer tarda 5 minutos! y posteriormente al momento de serializar el objeto Comprobante en un archivo XML tarda 2 minutos! y esto de verdad es bastante tiempo, espero y puedan ayudarme de verdad lo agradeceria mucho. Anexo mi codigo:
Código: Seleccionar todo
Comprobante objCompXSD = new Comprobante();
// Nodo comprobante
objCompXSD.Version = "3.3";
objCompXSD.Serie = "MAQ";
objCompXSD.Folio ="1";
objCompXSD.Fecha = Convert.ToDateTime(DateTime.Now.ToString("s"));
objCompXSD.FormaPago = c_FormaPago.Item01;
objCompXSD.SubTotal = Convert.ToDecimal("1000");
objCompXSD.Moneda = c_Moneda.MXN;
objCompXSD.Total = Convert.ToDecimal("1160");
objCompXSD.TipoDeComprobante = c_TipoDeComprobante.I;
objCompXSD.MetodoPago = c_MetodoPago.PUE;
objCompXSD.LugarExpedicion = c_CodigoPostal.Item84000;
// Nodo emisor
objCompXSD.Emisor = new ComprobanteEmisor();
objCompXSD.Emisor.Rfc = "AAA010101AAA";
objCompXSD.Emisor.Nombre = "EMPRESA, S.A.DE C.V.";
objCompXSD.Emisor.RegimenFiscal = c_RegimenFiscal.Item601;
// Nodo receptor
objCompXSD.Receptor = new ComprobanteReceptor();
objCompXSD.Receptor.Rfc = "AAA012101AAA";
objCompXSD.Receptor.Nombre = "NOMBRE";
objCompXSD.Receptor.UsoCFDI = c_UsoCFDI.G01;
// Nodo conceptops
objCompXSD.Conceptos = new ComprobanteConcepto[1]; // Numero de Filas
objCompXSD.Conceptos[0] = new ComprobanteConcepto(); // Instancia de la Fila
objCompXSD.Conceptos[0].ClaveProdServ = c_ClaveProdServ.Item43231500;
objCompXSD.Conceptos[0].Cantidad = 1;
objCompXSD.Conceptos[0].ClaveUnidad = c_ClaveUnidad.C62;
objCompXSD.Conceptos[0].Unidad = "Software";
objCompXSD.Conceptos[0].Descripcion = "Programacion de software";
objCompXSD.Conceptos[0].ValorUnitario = 1;
// [0] Debe aumentar para el siguiente Concepto
// Impuestos
objCompXSD.Impuestos = new ComprobanteImpuestos();
objCompXSD.Impuestos.TotalImpuestosTrasladadosSpecified = true; // Estatus si aparece
objCompXSD.Impuestos.TotalImpuestosTrasladados = 222;
// Impuestos Traslados
objCompXSD.Impuestos.Traslados = new ComprobanteImpuestosTraslado[1];
objCompXSD.Impuestos.Traslados[0] = new ComprobanteImpuestosTraslado();
objCompXSD.Impuestos.Traslados[0].Importe = 160;
objCompXSD.Impuestos.Traslados[0].TasaOCuota = c_TasaOCuota.Item0059100;
objCompXSD.Impuestos.Traslados[0].Impuesto = c_Impuesto.Item002;
// Complemento
// objCompXSD.Complemento = new ComprobanteComplemento();
// Creas los namespaces requeridos
XmlSerializerNamespaces xmlNameSpace = new XmlSerializerNamespaces();
xmlNameSpace.Add("cfdi", "http://www.sat.gob.mx/cfd/3");
xmlNameSpace.Add("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital");
xmlNameSpace.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance");
xmlNameSpace.Add("schemaLocation", "cfdv33.xsd");
// Creas una instancia de XMLSerializer con el tipo de dato Comprobante
XmlSerializer xmlSerialize = new XmlSerializer(typeof(Comprobante));// <---- AQUI TARDA 5 MINUTOS
// Creas una instancia de XmlTextWriter donde se va a guardar el resultado de la serialización
XmlTextWriter xmlTextWriter = new XmlTextWriter(@"C:\xml\comprobanteSinTimbrar.xml", Encoding.UTF8);
xmlTextWriter.Formatting = Formatting.Indented;
// Y serializas…
xmlSerialize.Serialize(xmlTextWriter, objCompXSD);// <----- Y AQUI TARDA 2 MINUTOS
xmlTextWriter.Close();
MessageBox.Show("Listo!");