La herramienta Definición de esquemas XML (Xsd.exe) genera clases de esquemas XML o de Common Language Runtime a partir de archivos XDR, XML y XSD, o a partir de clases de un ensamblado de motor en tiempo de ejecución.
La herramienta de definición de esquema XML (Xsd.exe) suele estar en la siguiente ruta de acceso: C:\Archivos de programa (x86)\Microsoft SDKs\Windows\{versión}\bin\NETFX {versión} Tools\
Sintaxis
Ejecute la herramienta desde la línea de comandos.
Para que las herramientas de .NET Framework funcionen como deben, hay que configurar correctamente las variables de entorno Path, Include y Lib. Para establecer estas variables de entorno, ejecute SDKVars.bat, que se encuentra en el directorio <SDK>\<versión>\Bin. SDKVars.bat debe ejecutarse en cada shell de comando.
Argumento
Argumento
Descripción
file.extension
Especifica el archivo de entrada que se desea convertir. Debe especificar alguna de las siguientes extensiones: .xdr, .xml, .xsd, .dll o .exe.
Si se especifica un archivo de esquema XDR (extensión .xdr), Xsd.exe convierte el esquema XDR en un esquema XSD. El archivo de salida tiene el mismo nombre que el del esquema XDR, pero con la extensión .xsd.
Si se especifica un archivo XML (extensión .xml), Xsd.exe deduce, por los datos del archivo, que se trata de un esquema y genera un esquema XSD. El archivo de salida tiene el mismo nombre que el archivo XML, pero con la extensión .xsd.
Si se especifica un archivo de esquema XML (extensión .xsd), Xsd.exe genera código fuente para objetos de motor en tiempo de ejecución que corresponden al esquema XML.
Si se especifica un archivo de ensamblado de motor en tiempo de ejecución (extensión .exe o .dll), Xsd.exe genera esquemas para uno o más tipos de ese ensamblado. Se puede utilizar la opción /type para especificar los tipos para los que se generan esquemas. Los esquemas de salida se denominan schema0.xsd, schema1.xsd, etc. Xsd.exe genera varios esquemas solo si los tipos dados especifican un espacio de nombres mediante el atributo personalizado XMLRoot.
Opciones generales
Opción
Descripción
/h[elp]
Muestra las opciones y la sintaxis de los comandos para la herramienta.
/o[utputdir]:directory
Especifica el directorio de los archivos de salida. Este argumento sólo puede aparecer una vez. El valor predeterminado es el directorio actual.
/?
Muestra las opciones y la sintaxis de los comandos para la herramienta.
/p[arameters]:file.xml
Lee las opciones de los distintos modos de operación desde el archivo .xml especificado. La forma abreviada es /p:. Para más información, vea la sección Comentarios.
Opciones de archivos XSD
Se debe especificar sólo una de las opciones siguientes de archivos .xsd.
Opción
Descripción
/c[lasses]
Genera clases que corresponden al esquema especificado. Para leer datos XML del objeto, use el método XmlSerializer.Deserialize.
/d[ataset]
Genera una clase derivada de DataSet que corresponde al esquema especificado. Para leer datos XML de la clase derivada, use el método DataSet.ReadXml.
También se puede especificar cualquiera de las opciones siguientes de archivos .xsd.
Opción
Descripción
/e[lement]:element
Especifica el elemento del esquema para el que se genera código. De forma predeterminada se escriben todos los elementos. Este argumento se puede especificar varias veces.
/enableDataBinding
Implementa la interfaz INotifyPropertyChanged en todos los tipos generados para habilitar el enlace de datos. La forma abreviada es /edb.
Especifica el lenguaje de programación que se utiliza. Se puede elegir entre CS (C#, que es el valor predeterminado), VB (Visual Basic), JS (JScript) o VJS (Visual J#). También se puede especificar un nombre completo para una clase que implemente System.CodeDom.Compiler.CodeDomProvider.
/n[amespace]:namespace
Especifica el espacio de nombres del motor en tiempo de ejecución para los tipos generados. El espacio de nombres predeterminado es Schemas.
/nologo
Suprime la pancarta.
/order
Genera identificadores de orden explícitos en todos los miembros de partícula.
/o[ut]:directoryName
Especifica el directorio de salida en el que se colocan los archivos. El valor predeterminado es el directorio actual.
/u[ri]:uri
Especifica el identificador URI de los elementos del esquema para el que se genera código. Este identificador URI, si existe, se aplica a todos los elementos especificados con la opción /element.
Opciones de archivos DLL y EXE
Opción
Descripción
/t[ype]:typename
Especifica el nombre del tipo para el que se crea un esquema. Se pueden especificar varios argumentos de tipo. Si typename no especifica un espacio de nombres, Xsd.exe busca todos los tipos del ensamblado con el tipo especificado. Si typename especifica un espacio de nombres, solo se busca ese tipo. Si typename termina con un carácter de asterisco (*), la herramienta empareja todos los tipos que empiezan con la cadena anterior a *. Si se omite la opción /type, Xsd.exe genera esquemas para todos los tipos del ensamblado.
Comentarios
En la siguiente tabla se muestran las operaciones que realiza Xsd.exe.
Operación
Descripción
XDR a XSD
Genera un esquema XML a partir de un archivo de esquema reducido de datos XML. XDR es un formato de esquemas anterior basado en XML.
XML a XSD
Genera un esquema XML a partir de un archivo XML.
XSD a DataSet
Genera clases DataSet de Common Language Runtime a partir de un archivo de esquema XSD. Las clases generadas proporcionan un modelo de objetos completo para datos XML regulares.
XSD a clases
Genera clases de motor en tiempo de ejecución a partir de un archivo de esquema XSD. Las clases generadas se pueden usar conjuntamente con System.Xml.Serialization.XmlSerializer para leer y escribir código XML que sigue al esquema.
Clases a XSD
Genera un esquema XML a partir de un tipo o tipos de un archivo de ensamblado de motor en tiempo de ejecución. El esquema generado define el formato XML usado por XmlSerializer.
Xsd.exe solo permite manipular esquemas XML que siguen al lenguaje de definición de esquemas XML (XSD) propuesto por el consorcio World Wide Web (W3C). Para más información sobre la propuesta XSD (lenguaje de definición de esquemas XML) o la norma XML, vea https://w3.org.
Establecer opciones con un archivo XML
El uso del modificador /parameters permite especificar un único archivo XML que establece distintas opciones. Las opciones que pueden establecerse dependen de la forma en que se esté utilizando la herramienta XSD.exe. Entre estas opciones se incluyen la generación de esquemas, archivos de código o archivos de código que incluyen características DataSet. Por ejemplo, el elemento <assembly> puede establecerse en el nombre de un archivo ejecutable (.exe) o de biblioteca de tipos (.dll) al generar un esquema, pero no al generar un archivo de código. En el siguiente XML se muestra la forma de utilizar el elemento <generateSchemas> con un archivo ejecutable especificado:
XML
<!-- This is in a file named GenerateSchemas.xml. --><xsdxmlns='http://microsoft.com/dotnet/tools/xsd/'><generateSchemas><assembly>ConsoleApplication1.exe</assembly></generateSchemas></xsd>
Si el XML anterior está incluido en un archivo denominado GenerateSchemas.xml, use el modificador /parameters escribiendo lo siguiente en una línea de comandos y presionando Entrar:
Consola
xsd /p:GenerateSchemas.xml
Por otro lado, si se estuviese generando un esquema para un tipo único situado en el ensamblado, se podría utilizar el siguiente código XML:
XML
<!-- This is in a file named GenerateSchemaFromType.xml. --><xsdxmlns='http://microsoft.com/dotnet/tools/xsd/'><generateSchemas><type>IDItems</type></generateSchemas></xsd>
Pero para poder utilizar el código anterior, habría que especificar también el nombre del ensamblado en el símbolo del sistema. Escriba lo siguiente en el símbolo del sistema (se da por hecho que el nombre del archivo XML es GenerateSchemaFromType.xml):
Solo se debe especificar una de las siguientes opciones para el elemento <generateSchemas>.
Elemento
Descripción
<assembly>
Especifica el ensamblado a partir del cual generar el esquema.
<type>
Especifica un tipo situado en un ensamblado para el que generar un esquema.
<xml>
Especifica un archivo XML para el que generar un esquema.
<xdr>
Especifica un archivo XDR para el que generar un esquema.
Para generar un archivo de código, utilice el elemento <generateClasses>. En el siguiente ejemplo se genera un archivo de código. Observe que se muestran también dos atributos que permiten establecer el lenguaje de programación y el espacio de nombres del archivo generado.
XML
<xsdxmlns='http://microsoft.com/dotnet/tools/xsd/'><generateClasseslanguage='VB'namespace='Microsoft.Serialization.Examples'/></xsd><!-- You must supply an .xsd file when typing in the command line.--><!-- For example: xsd /p:genClasses mySchema.xsd -->
Entre las opciones que se pueden establecer para el elemento <generateClasses> se incluyen las siguientes.
Elemento
Descripción
<element>
Especifica un elemento del archivo .xsd para el que generar código.
Especifica un archivo de esquema XML para el que generar un código. Se pueden especificar varios archivos de esquema XML con varios elementos <schema>.
En la siguiente tabla se muestran los atributos que también pueden utilizarse con el elemento <generateClasses>.
Atributo
Descripción
lenguaje
Especifica el lenguaje de programación que se utiliza. Se puede elegir entre CS (C#, que es el valor predeterminado), VB (Visual Basic), JS (JScript) o VJS (Visual J#). También se puede especificar un nombre completo para una clase que implemente CodeDomProvider.
namespace
Especifica el espacio de nombres del código generado. El espacio de nombres debe ajustarse a los estándares CLR (por ejemplo, no debe incluir espacios ni caracteres de barra diagonal inversa).
opciones
Uno de los siguientes valores: none, properties (genera propiedades en lugar de campos públicos), order o enableDataBinding (vea los modificadores /order y /enableDataBinding en la sección Opciones de archivos XSD anterior).
También se puede controlar la forma en que se genera el código DataSet mediante el uso del elemento <generateDataSet>. El siguiente XML especifica que el código generado usa estructuras DataSet (como la clase DataTable) para crear código de Visual Basic para un elemento especificado. Las estructuras de DataSet generadas admitirán consultas LINQ.
Entre las opciones que se pueden establecer para el elemento <generateDataSet> se incluyen las siguientes.
Elemento
Descripción
<schema>
Especifica un archivo de esquema XML para el que generar un código. Se pueden especificar varios archivos de esquema XML con varios elementos <schema>.
En la siguiente tabla se muestran los atributos que también pueden utilizarse con el elemento <generateDataSet>.
Atributo
Descripción
enableLinqDataSet
Especifica que el Conjunto de datos generado se puede consultar utilizando LINQ a Conjunto de datos. El valor predeterminado es false.
lenguaje
Especifica el lenguaje de programación que se utiliza. Se puede elegir entre CS (C#, que es el valor predeterminado), VB (Visual Basic), JS (JScript) o VJS (Visual J#). También se puede especificar un nombre completo para una clase que implemente CodeDomProvider.
namespace
Especifica el espacio de nombres del código generado. El espacio de nombres debe ajustarse a los estándares CLR (por ejemplo, no debe incluir espacios ni caracteres de barra diagonal inversa).
Hay atributos que pueden establecerse en el elemento <xsd> de nivel superior. Estas opciones pueden utilizarse con cualquiera de los elementos secundarios (<generateSchemas>, <generateClasses> o <generateDataSet>). El siguiente código XML genera código para un elemento denominado "IDItems" del directorio de resultados denominado "MyOutputDirectory".
En la siguiente tabla se muestran los atributos que también pueden utilizarse con el elemento <xsd>.
Atributo
Descripción
salida
Nombre del directorio donde se colocará el esquema o archivo de código generado.
nologo
Suprime la pancarta. Se establece en true o false.
ayuda
Muestra las opciones y la sintaxis de los comandos para la herramienta. Se establece en true o false.
Ejemplos
El comando siguiente genera un esquema XML a partir de myFile.xdr y lo guarda en el directorio actual.
Consola
xsd myFile.xdr
El comando siguiente genera un esquema XML a partir de myFile.xml y lo guarda en el directorio especificado.
Consola
xsd myFile.xml /outputdir:myOutputDir
El siguiente comando genera un conjunto de datos correspondiente al esquema especificado en el lenguaje C# y guarda estos datos como XSDSchemaFile.cs en el directorio actual.
Consola
xsd /dataset /language:CS XSDSchemaFile.xsd
El comando siguiente genera esquemas XML para todos los tipos del ensamblado myAssembly.dll, y los guarda como schema0.xsd en el directorio actual.
El origen de este contenido se puede encontrar en GitHub, donde también puede crear y revisar problemas y solicitudes de incorporación de cambios. Para más información, consulte nuestra guía para colaboradores.
Comentarios de .NET
.NET es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios:
Únase a la serie de reuniones para crear soluciones de inteligencia artificial escalables basadas en casos de uso reales con compañeros desarrolladores y expertos.