Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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