Para convertir un archivo XML ya timbrado a un objeto en C# haremos uso de la deserialización.
Lo primero que debes hacer es descargar las 2 clases que están debajo, estas clases fueron generadas por medio de los xsd del SAT (Como convertir un archivo xsd a clases).
TimbreFiscalDigitalv11_tdCFDI.cs
Una vez que tengas estas clases debes hacer lo siguiente (comento línea a línea para que entiendas el flujo):
//crear un objeto el cual tendrá el resultado final, este objeto es el principal Comprobante oComprobante; //pon la ruta donde tienes tu archivo XML Timbrado string path = @"C:\miXML.xml"; //creamos un objeto XMLSerializer para deserializar XmlSerializer oSerializer = new XmlSerializer(typeof(Comprobante)); //creamos un flujo el cual recibe nuestro xml using (StreamReader reader= new StreamReader(path)) { //aqui deserializamos oComprobante = (Comprobante)oSerializer.Deserialize(reader); //Deserializamos el complemento timbre fiscal foreach (var oComplemento in oComprobante.Complemento) { foreach (var oComplementoInterior in oComplemento.Any) { //si el complemento es TimbreFiscalDigital lo deserializamos if (oComplementoInterior.Name.Contains("TimbreFiscalDigital")) { //Objeto para aplicar ahora la deserialización del complemento timbre XmlSerializer oSerializerComplemento = new XmlSerializer(typeof(TimbreFiscalDigital)); //creamos otro flujo para el complemento using (var readerComplemento = new StringReader(oComplementoInterior.OuterXml)) { //y por ultimo deserializamos el complemento oComprobante.TimbreFiscalDigital = (TimbreFiscalDigital)oSerializerComplemento.Deserialize(readerComplemento); } } } } }
Te invito a que tomes mi curso gratuito para crear la factura electrónica 3.3, en menos de 1 hr ya serás capaz de desarrollar módulos para facturación según obliga el SAT.