viernes, 6 de marzo de 2015

Agregar el xsi:schemaLocation XML a partir de la serialización


       Actualmente estoy trabajando en un proyecto para implementar la facturación electrónica o CFDI. en mi caso  el XML lo obtengo a partir de la serializacion (convertir una clase en un XML) y uno de mis dolores de cabeza fue lograr que el XML contenga el xsi:schemaLocation;

Para solucionarlo es muy sencillo en la clase generada por la herramienta xsd hay que agregar una propiedad o campo quedando de la siguiente manera, marcado como instancia del Namespace:

public partial class Comprobante {

    [XmlAttribute(Namespace = XmlSchema.InstanceNamespace)]    public string schemaLocation = "http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv32.xsd";