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

3 comentarios:

Unknown dijo...

Que tipo de dato es pHistoricoTimbreCFDi por que no veo donde lo creas

Unknown dijo...

Hola Raymundo, disculpa si ya es muy tarde, pero hace mucho no mantengo esta cosa. El objeto del que preguntas es un objeto que creo de respaldo a manera de bitacora o historico de los comprobantes que genero. Si te puedo ayudar en algo por favor hazmelo saber. Puedes escribirme a karloz.arba@gmail.com
Saludos

Alfonso Torres dijo...

Viejo buenas noches, oye una pregunta, como creaste esta etiqueta
pHistoricoTimbreCFDi.FechaTimbrado

Saludos