lunes, 24 de septiembre de 2012

Cargar XML a Clase XSD del Sat

Hola a todos hoy vamos a ver como cargar la informacion de un xml(factura electronica o Cfdi v3.2) a una clase generada del xsd (v3.2) que proporciona el SAT para validar los xml.
 
Primero vamos a descargar el xsd(Esquema de validación) del sat de la siguiente liga XSD del SAT v3.2
 
Ahora vamos a generar la clase del xsd descargado, para ello vamos a Visual Studio (en mi caso 2010) ir al Menu Herramientas/Herramientas Externas enseguida se abrira una ventana como la siguiente:
 
 
En esta ventana damos click en Agregar/Add y llenamos los campos con los datos:
 
Los datos a llenar serian los siguientes:
Titulo: Pasar de XSD a Clase
Comando: C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\xsd.exe
Argumentos: $(ItemPath) /c /outputdir:$(ItemDir)
Directorio inicial: $(ProjectDir)
 
Enseguida damos clic en Aplicar/Aceptar y listo tenemos configurado nuestra herramienta para crear la clase del xsd.
Ahora agregamos el xsd a nuestro proyecto en vs, seleccionamos el archivo cfdv32.xsd y vamos al menú Herramientas y damos clic en Pasar de XSD a Clase nos aparecera una ventana de consola continuamos, actualizamos el proyecto y listo ya tenemos la clase generada como se muestra en la siguiente imagen.
 
 
Ahora escribimos el siguiente codigo que nos servirá para cargar el xml en la clase generada, con esto cargamos toda la informacion del xml en las propiedades definidas en la clase para tener acceso a ellos, otra utilidad que le podemos dar es para validar el xml si se produce un error nos devolvera null, esto quiere decir que el xml esta mal, aunque es recomendable utilizar otro metodo de validacion que de mas detalles de cual es el error encontrado.
 
private static Comprobante LoadCFDv32(string strXml)
{
    try
    {
        StreamReader strRd = new StreamReader(strXml);
        XmlSerializer xSer = new XmlSerializer(typeof(Comprobante));
        Comprobante obCFD = (Comprobante
)xSer.Deserialize(strRd);        strRd.Close();
        return obCFD;
    }
    catch
    {
       return null;
 
   }
}
 
 
Enseguida en alguna parte del sistema instanciamos la clase Comprobante(Que es la clase generada del xsd):
 
 
Comprobante cfd32 = new Comprobante();
 
Y hacemos llamada al metodo LoadCFDv32 pasandole como parametro la ruta/path del archivo xml(cfdi/factura electronica) a cargar.
 
 
string pathXml = @"c:\temp\testxml.xml";
 
cfd32 = LoadCFDv32(pathXml);
 
Listo!!!!
 
Si el xml tiene el formato correcto segun el esquema del sat tendremos la informacion cargada en la clase.
 
Como ejemplo podemos obtener el rfc del emisor de la siguiente manera:
 
 
string rfcEmisor = cfd32.Emisor.rfc;
 
 
Saludos a todos!!! Cualquier duda o si en algo estoy mal, con gusto recibo sus comentarios.
 
Dios los bendiga!!!






 
 
 
 


sábado, 21 de julio de 2012

Tutorial de MVC3

Que tal, este es mi primera Entrada en mi blog para programadores, hoy les dejo un manual muy bueno para programar utilizando MVC 3.

Lo pueden descargar aqui:
Docs Getting_started_with_mvc3_cs

Saludos a todos!!