BenuR, hay una manera más fácil para generar el xml.
-Convertir cfdv2.xsd (está en la página del SAT) a clase de c# desde la linea de comandos ms-dos:
(Devuelve cfdv2.cs)
-Integrarlo al proyecto como módulo de clase, por ejemplo con el nombre Comprobante.cs
-Ahora se declara una variable de tipo Comprobante
Código:
Comprobante comprobante = new Comprobante();
-Se le asignan valores:
Código:
comprobante.version = "2.0";
comprobante.serie = "ABCD";
.
.
.
... y así con cada clase (emisor, receptor, conceptos, impuestos, etc.) del módulo Comprobante.cs:
Código:
ComprobanteEmisor comprobanteEmisor = new ComprobanteEmisor();
comprobanteEmisor.nombre = "Juan Pérez";
comprobanteEmisor.rfc = "ABCD0102039Z0";
.
.
.
-Después se genera el xml con:
Código:
using System.xml;
using System.Xml.Serialization;
using System.Text.Encoding;
XmlSerializerNamespaces xmlNameSpace = new XmlSerializerNamespaces();
xmlNameSpace.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance");
XmlTextWriter xmlTextWriter = new XmlTextWriter(RutaConNombreArchivoSinExtension + ".xml", Encoding.UTF8);
xmlTextWriter.Formatting = Formatting.Indented;
XmlSerializer xs = new XmlSerializer(typeof(Comprobante));
xs.Serialize(xmlTextWriter, comprobante, xmlNameSpace);
xmlTextWriter.Close();
Será necesario generar el xml dos veces: la segunda para insertarle el sello digital. Si quieren mas adelante los digo como se hace.
Espero sirva. A la orden para dudas, correcciones u objeciones.
Saludos!