public List<ComprobanteXML> ArchivosXmlaProcesarObtener(String sCarpeta) { facturasGrid = new List<ComprobanteXML>(); extraccionXML = new List<string>(); FileInfo existencia = null; extraccionXML = iterarDirectorio(sCarpeta); foreach (String xmlCurrent in extraccionXML) { ComprobanteXML xmlAgregar = new ComprobanteXML(); try { existencia = new FileInfo(xmlCurrent); xmlAgregar = XMLExtraerInformacion(xmlCurrent); } catch (Exception e) { String error; error = String.Format("{0} Error:{1}", existencia.Name, e.Message); xmlAgregar.nombreEmisor = error; } facturasGrid.Add(xmlAgregar); } return facturasGrid; }
public ComprobanteXML XMLExtraerInformacion(String xml) { FileInfo existenciaArchivo = new FileInfo(xml); ComprobanteXML oXml = new ComprobanteXML(); var XMLBase = XDocument.Load(xml); IEnumerable<XElement> nElementos = XMLBase.Document.Root.Elements(); oXml.nombreArchivo = existenciaArchivo.Name; IEnumerable<XElement> xEmisor = (from emisor in nElementos where emisor.Name.LocalName == "Emisor" select emisor ).ToList(); IEnumerable<XElement> xReceptor = (from emisor in nElementos where emisor.Name.LocalName == "Receptor" select emisor ).ToList(); var xComplemento = (from emisor in nElementos where emisor.Name.LocalName == "Complemento" select emisor ).Descendants(); oXml.version = "3.0"; //predeterminada if (null != XMLBase.Document.Root.Attribute("version")) { oXml.version = (String)XMLBase.Document.Root.Attribute("version").Value; } if (null != XMLBase.Document.Root.Attribute("Version")) { oXml.version = (String)XMLBase.Document.Root.Attribute("Version").Value; } //oXml.version = (String)XMLBase.Document.Root.Attribute("version").Value; switch (oXml.version) { case "3.2": oXml.tipodeComprobante = (String)XMLBase.Document.Root.Attribute("tipoDeComprobante").Value; oXml.total = Double.Parse(XMLBase.Document.Root.Attribute("total").Value); oXml.subTotal = Double.Parse(XMLBase.Document.Root.Attribute("subTotal").Value); oXml.fechaExpedido = DateTime.Parse(XMLBase.Document.Root.Attribute("fecha").Value); oXml.folio = ""; if (null != XMLBase.Document.Root.Attribute("folio")) { if (!String.IsNullOrEmpty(XMLBase.Document.Root.Attribute("folio").Value)) { oXml.folio = XMLBase.Document.Root.Attribute("folio").Value; } } oXml.metodoDePago = XMLBase.Document.Root.Attribute("metodoDePago").Value; oXml.rfcEmisor = xEmisor.Attributes("rfc").FirstOrDefault().Value; oXml.nombreEmisor = xEmisor.Attributes("nombre").FirstOrDefault().Value; oXml.rfcReceptor = xReceptor.Attributes("rfc").FirstOrDefault().Value; oXml.nombreReceptor = ""; if (null != xReceptor.Attributes("nombre").FirstOrDefault()) { oXml.nombreReceptor = xReceptor.Attributes("nombre").FirstOrDefault().Value; } break; case "3.3": oXml.tipodeComprobante = (String)XMLBase.Document.Root.Attribute("TipoDeComprobante").Value; oXml.total = Double.Parse(XMLBase.Document.Root.Attribute("Total").Value); oXml.subTotal = Double.Parse(XMLBase.Document.Root.Attribute("SubTotal").Value); oXml.fechaExpedido = DateTime.Parse(XMLBase.Document.Root.Attribute("Fecha").Value); oXml.folio = String.Empty; if (null != XMLBase.Document.Root.Attribute("Folio")) { if (!String.IsNullOrEmpty(XMLBase.Document.Root.Attribute("Folio").Value)) { oXml.folio = XMLBase.Document.Root.Attribute("Folio").Value; } } if (null != XMLBase.Document.Root.Attribute("MetodoPago")) { oXml.metodoDePago = XMLBase.Document.Root.Attribute("MetodoPago").Value; } oXml.rfcEmisor = xEmisor.Attributes("Rfc").FirstOrDefault().Value; if (null != xEmisor.Attributes("Nombre").FirstOrDefault()) { oXml.nombreEmisor = xEmisor.Attributes("Nombre").FirstOrDefault().Value; } oXml.rfcReceptor = xReceptor.Attributes("Rfc").FirstOrDefault().Value; oXml.nombreReceptor = String.Empty; if (null != xReceptor.Attributes("Nombre").FirstOrDefault()) { oXml.nombreReceptor = xReceptor.Attributes("Nombre").FirstOrDefault().Value; } break; default: break; } DateTime _fechaTimbrado = DateTime.Now; DateTime.TryParse(xComplemento.Attributes("FechaTimbrado").FirstOrDefault().Value, out _fechaTimbrado); oXml.fechaTimbrado = _fechaTimbrado; oXml.UUId = xComplemento.Attributes("UUID").FirstOrDefault().Value.ToString(); return oXml; }