Compartir a través de


Herramienta de definición de esquema XML (Xsd.exe)

La herramienta Definición de esquema XML (Xsd.exe) genera clases de esquema XML o Common Language Runtime a partir de archivos XDR, XML y XSD, o desde clases de un ensamblado en tiempo de ejecución.

La herramienta de definición de esquema XML (Xsd.exe) normalmente se puede encontrar en la siguiente ruta:
C:\Archivos de programa (x86)\Microsoft SDKs\Windows\{version}\bin\NETFX {version} Tools\

Sintaxis

Ejecute la herramienta desde la línea de comandos.

xsd file.xdr [-outputdir:directory][/parameters:file.xml]
xsd file.xml [-outputdir:directory] [/parameters:file.xml]
xsd file.xsd {/classes | /dataset} [/element:element]
             [/enableLinqDataSet] [/language:language]
                          [/namespace:namespace] [-outputdir:directory] [URI:uri]
                          [/parameters:file.xml]
xsd {file.dll | file.exe} [-outputdir:directory] [/type:typename [...]][/parameters:file.xml]

Sugerencia

Para que las herramientas de .NET Framework funcionen correctamente, debe establecer las variables de entorno Path, Include y Lib correctamente. Establezca estas variables de entorno ejecutando SDKVars.bat, que se encuentra en el <directorio SDK>\<version>\Bin. SDKVars.bat debe ejecutarse en cada shell de comando.

Argumento

Argumento Descripción
file.extension Especifica el archivo de entrada que se va a convertir. Debe especificar la extensión como una de las siguientes: .xdr, .xml, .xsd, .dllo .exe.

Si 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 esquema XDR, pero con la extensión .xsd.

Si especifica un archivo XML (.xml extensión), Xsd.exe deduce un esquema de los datos del archivo y genera un esquema XSD. El archivo de salida tiene el mismo nombre que el archivo XML, pero con la extensión .xsd.

Si especifica un archivo de esquema XML (extensión.xsd), Xsd.exe genera código fuente para objetos en tiempo de ejecución que corresponden al esquema XML.

Si especifica un archivo de ensamblado en tiempo de ejecución (.exe o .dll extensión), Xsd.exe genera esquemas para uno o varios tipos de ese ensamblado. Puede usar la /type opción para especificar los tipos para los que se van a generar esquemas. Los esquemas de salida se denominan schema0.xsd, schema1.xsd, etc. Xsd.exe genera varios esquemas solo si los tipos especificados especifican un espacio de nombres mediante el XMLRoot atributo personalizado.

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 para los archivos de salida. Este argumento solo 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 varios modos de operación del archivo de .xml especificado. El formato corto es /p:. Para más información, vea la sección Comentarios.

Opciones de archivo XSD

Debe especificar solo una de las siguientes opciones para los archivos .xsd.

Opción Descripción
/c[lasses] Genera clases que corresponden al esquema especificado. Para leer datos XML en el objeto, use el XmlSerializer.Deserialize método .
/d[ataset] Genera una clase derivada de DataSet que corresponde al esquema especificado. Para leer datos XML en la clase derivada, use el DataSet.ReadXml método .

También puede especificar cualquiera de las siguientes opciones para los archivos .xsd.

Opción Descripción
/e[lement]:element Especifica el elemento del esquema para el que se va a generar código. De forma predeterminada se escriben todos los elementos. Puede especificar este argumento más de una vez.
/enableDataBinding Implementa la INotifyPropertyChanged interfaz en todos los tipos generados para habilitar el enlace de datos. El formato corto es /edb.
/enableLinqDataSet (Formato corto: /eld.) Especifica que el conjunto de datos generado se puede consultar con el uso de LINQ to DataSet. Esta opción se usa cuando también se especifica la opción /dataset. Para obtener más información, vea LINQ to DataSet Overview and Querying Typed DataSets. Para obtener información general sobre el uso de LINQ, vea Language-Integrated Query (LINQ) - C# o Language-Integrated Query (LINQ): Visual Basic.
/f[ields] Genera solo campos. De forma predeterminada, se generan propiedades con campos de respaldo .
/l[anguage]:language Especifica el lenguaje de programación que se va a usar. Elija entre CS (C#, que es el valor predeterminado), VB (Visual Basic), JS (JScript) o VJS (Visual J#). También puede especificar un nombre completo para una clase que implementa 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 el banner.
/orden Genera identificadores de orden explícitos en todos los miembros de partículas.
/o[ut]:directoryName Especifica el directorio de salida en el que colocar los archivos. El valor predeterminado es el directorio actual.
/u[ri]:uri Especifica el URI para los elementos del esquema para los que se va a generar código. Este URI, si está presente, se aplica a todos los elementos especificados con la /element opción .

Opciones de archivo DLL y EXE

Opción Descripción
/t[ype]:typename Especifica el nombre del tipo para el que se va a crear un esquema. Puede 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 asterisco (*), la herramienta coincide con todos los tipos que comienzan con la cadena anterior a *. Si omite la /type opción, Xsd.exe genera esquemas para todos los tipos del ensamblado.

Observaciones

En la tabla siguiente se muestran las operaciones que Xsd.exe realiza.

Operación Descripción
XDR a XSD Genera un esquema XML a partir de un archivo de esquema XML-Data-Reduced. XDR es un formato de esquema basado en XML temprano.
XML a XSD Genera un esquema XML a partir de un archivo XML.
XSD a DataSet Genera clases de Common Language Runtime DataSet a partir de un archivo de esquema XSD. Las clases generadas proporcionan un modelo de objetos enriquecido para los datos XML normales.
XSD a clases Genera clases en tiempo de ejecución a partir de un archivo de esquema XSD. Las clases generadas se pueden usar junto 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 en un archivo de ensamblado en tiempo de ejecución. El esquema generado define el formato XML usado por .XmlSerializer

Xsd.exe solo permite manipular esquemas XML que siguen el lenguaje de definición de esquema XML (XSD) propuesto por World Wide Web Consortium (W3C). Para obtener más información sobre la propuesta de definición de esquema XML o el estándar XML, vea https://w3.org.

Establecer opciones con un archivo XML

Mediante el uso del /parameters interruptor, puede especificar un único archivo XML que configure varias opciones. Las opciones que puede establecer dependen de cómo se usa la herramienta XSD.exe. Entre las opciones se incluyen la generación de esquemas, la generación de archivos de código o la generación de archivos de código que incluyen DataSet características. Por ejemplo, puede establecer el <assembly> elemento en el nombre de un archivo ejecutable (.exe) o biblioteca de tipos (.dll) al generar un esquema, pero no al generar un archivo de código. El siguiente XML muestra cómo usar el <generateSchemas> elemento con un archivo ejecutable especificado:

<!-- This is in a file named GenerateSchemas.xml. -->
<xsd xmlns='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:

 xsd /p:GenerateSchemas.xml

Por otro lado, si está generando un esquema para un único tipo que se encuentra en el ensamblado, puede usar el siguiente XML:

<!-- This is in a file named GenerateSchemaFromType.xml. -->
<xsd xmlns='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):

xsd /p:GenerateSchemaFromType.xml ConsoleApplication1.exe

Debe especificar solo una de las siguientes opciones para el <generateSchemas> elemento .

Elemento Descripción
<ensamblaje> Especifica un ensamblado desde el que se va a generar el esquema.
<tipo> Especifica un tipo encontrado en un ensamblado para el que se va a generar un esquema.
<XML> Especifica un archivo XML para el que se va a generar un esquema.
<Xdr> Especifica un archivo XDR para el que se va a generar un esquema.

Para generar un archivo de código, use el <generateClasses> elemento . En el ejemplo siguiente se genera un archivo de código. Tenga en cuenta que también se muestran dos atributos que permiten establecer el lenguaje de programación y el espacio de nombres del archivo generado.

<xsd xmlns='http://microsoft.com/dotnet/tools/xsd/'>
<generateClasses language='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 -->

Las opciones que puede establecer para el <generateClasses> elemento incluyen lo siguiente.

Elemento Descripción
<elemento> Especifica un elemento del archivo .xsd para el que se va a generar código.
<schemaImporterExtensions> Especifica un tipo derivado de la SchemaImporterExtension clase .
<esquema> Especifica un archivo de esquema XML para el que se va a generar código. Se pueden especificar varios archivos de esquema XML mediante varios <elementos de esquema> .

En la tabla siguiente se muestran los atributos que también se pueden usar con el <generateClasses> elemento .

Atributo Descripción
lenguaje Especifica el lenguaje de programación que se va a usar. Elija entre CS (C#, el valor predeterminado), VB (Visual Basic), JS (JScript) o VJS (Visual J#). También puede especificar un nombre completo para una clase que implemente CodeDomProvider.
Espacio de nombres (namespace) Especifica el espacio de nombres para el código generado. El espacio de nombres debe cumplir los estándares CLR (por ejemplo, sin 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 (consulte los modificadores /order y /enableDataBinding en la sección Opciones de archivo 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 DataSet estructuras (como la DataTable clase) para crear código de Visual Basic para un elemento especificado. Las estructuras dataSet generadas admitirán consultas LINQ.

<xsd xmlns='http://microsoft.com/dotnet/tools/xsd/'>
    <generateDataSet language='VB' namespace='Microsoft.Serialization.Examples' enableLinqDataSet='true'>
    </generateDataSet>
</xsd>

Las opciones que puede establecer para el <generateDataSet> elemento incluyen lo siguiente.

Elemento Descripción
<esquema> Especifica un archivo de esquema XML para el que se va a generar código. Se pueden especificar varios archivos de esquema XML mediante varios <elementos de esquema> .

En la tabla siguiente se muestran los atributos que se pueden usar con el <generateDataSet> elemento .

Atributo Descripción
enableLinqDataSet Especifica que el conjunto de datos generado se puede consultar utilizando LINQ para DataSet. El valor predeterminado es false.
lenguaje Especifica el lenguaje de programación que se va a usar. Elija entre CS (C#, el valor predeterminado), VB (Visual Basic), JS (JScript) o VJS (Visual J#). También puede especificar un nombre completo para una clase que implemente CodeDomProvider.
Espacio de nombres (namespace) Especifica el espacio de nombres para el código generado. El espacio de nombres debe cumplir los estándares CLR (por ejemplo, sin espacios ni caracteres de barra diagonal inversa).

Hay atributos que puede establecer en el elemento de nivel <xsd> superior. Estas opciones se pueden usar con cualquiera de los elementos secundarios (<generateSchemas><generateClasses>o <generateDataSet>). El código XML siguiente genera código para un elemento denominado "IDItems" en el directorio de salida denominado "MyOutputDirectory".

<xsd xmlns='http://microsoft.com/dotnet/tools/xsd/' output='MyOutputDirectory'>
<generateClasses>
    <element>IDItems</element>
</generateClasses>
</xsd>

En la tabla siguiente se muestran los atributos que también se pueden usar con el <xsd> elemento .

Atributo Descripción
resultado Nombre de un directorio donde se colocará el esquema o archivo de código generado.
nologo Suprime el banner. 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 siguiente comando genera un esquema XML desde myFile.xdr y lo guarda en el directorio actual.

xsd myFile.xdr

El siguiente comando genera un esquema XML desde myFile.xml y lo guarda en el directorio especificado.

xsd myFile.xml /outputdir:myOutputDir

El siguiente comando genera un conjunto de datos que corresponde al esquema especificado en el lenguaje C# y lo guarda como XSDSchemaFile.cs en el directorio actual.

xsd /dataset /language:CS XSDSchemaFile.xsd

El siguiente comando genera esquemas XML para todos los tipos del ensamblado myAssembly.dll y los guarda como schema0.xsd en el directorio actual.

xsd myAssembly.dll

Consulte también