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).
cfdv33_tdCFDI_catCFDI.cs
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.