martes, 13 de noviembre de 2012

Generar classes (.cs/.vb) a partir de un documento XML o plantilla XSD

El siguiente artículo resume los pasos sobre como obtener las clases .cs o .vb a partir de un esquema Xsd o documento Xml.

Usaremos la herramienta xsd.exe que viene con Visual Studio o si no lo tenemos podríamos obtenerla descargando el SDK del framework 2.0. Como alternativa se podría llegar a hacer lo mismo usando svcutil.exe.

En caso de tener Visual Studio instalado vamos al menú de inicio, Visual Studio, Visual Studio Tools y pulsamos en "Símbolo de sistema de Visual Studio". Veremos que nos abre una pantalla MS-DOS. En caso de no tener visual studio podríamos usar Xsd si vamos a la línea de comando (cmd) y nos situamos manualmente en el directorio que esté el ejecutable xsd.exe.

Una vez situado en el directorio que toca, ejecutamos el siguiente comando para convertir de Xml a Xsd:
C:\Program Files\Microsoft Visual Studio 10.0\VC>xsd.exe /c /l:CS c:\archivo.xml /o:c:\

Utilidad de compatibilidad para esquemas Xml y DataTypes de Microsoft (R)
[Microsoft (R) .NET Framework, Version 4.0.30319.1]
Copyright (C) Microsoft Corporation. All rights reserved.
Escribiendo el archivo 'C:\archivo.xsd'.
Ejecutamos posteriormente el siguiente comando. Si partimos de un Xsd en vez de un Xml podríamos obviar el paso anterior lo cual sería la situación ideal porque una plantilla Xsd contiene más información sobre los tipos que se han de generar en la clase que un documento Xml.
C:\Program Files\Microsoft Visual Studio 10.0\VC>xsd.exe /c /l:CS c:\archivo.xsd /o:c:\

Utilidad de compatibilidad para esquemas Xml y DataTypes de Microsoft (R)
[Microsoft (R) .NET Framework, Version 4.0.30319.1]
Copyright (C) Microsoft Corporation. All rights reserved.
Escribiendo el archivo 'C:\archivo.cs'.
Con esto ya podríamos agregar la clase 'archivo.cs' a nuestro proyecto .NET y usar los objetos generados automáticamente a partir del Xsd. Para volverlos a pasar a formato Xml podríamos serializar el objeto en disco usando XmlSerializer o DataContractSerializer combinado con XmlWriter.

Espero a alguien le sea útil, son bienvenidos todo tipo de comentarios. Recuerda que puedes seguir areaTIC en las redes sociales!


1 comentario:

Anónimo dijo...

muy util... saludos

Publicar un comentario en la entrada