lunes, 9 de diciembre de 2013

Obtener el nodo de un Xml (Cfdi) con todo y que tenga la nomenclatura ns:elemento, en 2 pataditas con LINQ. [LINQ TO XML]

 

Que tal pues nada que como parte de mi trabajo me vi en la necesidad de obtener el nodo del complemento TimbreFiscalDigital desde una factura CFDi que como bien sabran es un XML. Pues bien tras intentarlo con XPATH, y demas… siempre obtenia un error de Espacio de Nombres, y es que estos archivos poseen una nomenclatura basada en NameSpace y aun administrandolos no conseguia mi cometido.

Sin embargo he aqui como lo solucione extremadamente facil, claro esta con LINQ.

Espero que les sea de utilidad.

 



   1:  Dim xdoc = XDocument.Load(pArchivoXmlCfdiGenerado)
   2:              Dim timbreFiscal = (From item In xdoc.Descendants
   3:                                  Where item.Name.LocalName = "TimbreFiscalDigital"
   4:                                  Select item).First()
   5:   
   6:              pHistoricoTimbreCFDi.FechaTimbrado = Convert.ToDateTime(timbreFiscal.Attribute("FechaTimbrado").Value)
   7:              pHistoricoTimbreCFDi.UUID = timbreFiscal.Attribute("UUID").Value
   8:              pHistoricoTimbreCFDi.NoCertificadoSAT = timbreFiscal.Attribute("noCertificadoSAT").Value
   9:              pHistoricoTimbreCFDi.SelloCFD = timbreFiscal.Attribute("selloCFD").Value
  10:              pHistoricoTimbreCFDi.SelloSAT = timbreFiscal.Attribute("selloSAT").Value
  11:              pHistoricoTimbreCFDi.Version = timbreFiscal.Attribute("version").Value
  12:              pHistoricoTimbreCFDi.Esquemas = timbreFiscal.Parent.ToString