Ferramenta de Definição de Esquema XML (Xsd.exe)XML Schema Definition Tool (Xsd.exe)

A Ferramenta de Definição de Esquema XML (Xsd.exe) gera um esquema XML ou classes de common language runtime de arquivos XDR, XML e XSD files, ou de classes em um assembly de tempo de execução.The XML Schema Definition (Xsd.exe) tool generates XML schema or common language runtime classes from XDR, XML, and XSD files, or from classes in a runtime assembly.

SintaxeSyntax

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]

ArgumentoArgument

ArgumentoArgument DescriçãoDescription
file.extensionfile.extension Especifica o arquivo de entrada para ser convertido.Specifies the input file to convert. Você deve especificar a extensão como um dos seguintes:. XDR,. xml,. xsd,. dll ou. exe.You must specify the extension as one of the following: .xdr, .xml, .xsd, .dll, or .exe.

Se você especificar um arquivo de esquema XDR (extensão .xdr), o Xsd.exe converterá o esquema XDR em um esquema XSD.If you specify an XDR schema file (.xdr extension), Xsd.exe converts the XDR schema to an XSD schema. O arquivo de saída tem o mesmo nome que o esquema XDR, mas com a extensão .xsd.The output file has the same name as the XDR schema, but with the .xsd extension.

Se você especificar um arquivo XML (extensão .xml), o Xsd.exe deduzirá um esquema dos dados no arquivo e produzirá um esquema XSD.If you specify an XML file (.xml extension), Xsd.exe infers a schema from the data in the file and produces an XSD schema. O arquivo de saída tem o mesmo nome que o arquivo XML, mas com a extensão .xsd.The output file has the same name as the XML file, but with the .xsd extension.

Se você especificar um arquivo de esquema XML (extensão .xsd), o Xsd.exe gerará o código de origem para objetos em tempo de execução que correspondem ao esquema XML.If you specify an XML schema file (.xsd extension), Xsd.exe generates source code for runtime objects that correspond to the XML schema.

Se você especificar um arquivo de assembly de tempo de execução (extensão .exe ou .dll), o Xsd.exe gerará esquemas para um ou mais tipos nesse assembly.If you specify a runtime assembly file (.exe or .dll extension), Xsd.exe generates schemas for one or more types in that assembly. Você pode usar a opção /type para especificar os tipos para os quais gerar esquemas.You can use the /type option to specify the types for which to generate schemas. Os esquemas de saída são nomeados schema0.xsd, schema1.xsd e assim por diante.The output schemas are named schema0.xsd, schema1.xsd, and so on. O Xsd.exe produzirá vários esquemas somente se os determinados tipos especificarem um namespace usando o atributo personalizado XMLRoot.Xsd.exe produces multiple schemas only if the given types specify a namespace using the XMLRoot custom attribute.

Opções geraisGeneral Options

OpçãoOption DescriçãoDescription
/h[elp]/h[elp] Exibe sintaxe de comando e opções para a ferramenta.Displays command syntax and options for the tool.
/o[utputdir]: directory/o[utputdir]:directory Especifica o diretório para arquivos de saída.Specifies the directory for output files. Esse argumento pode aparecer somente uma vez.This argument can appear only once. O padrão é o diretório atual.The default is the current directory.
/?/? Exibe sintaxe de comando e opções para a ferramenta.Displays command syntax and options for the tool.
/p[arameters]: file.xml/p[arameters]:file.xml As opções de leitura para vários modos de operação do arquivo .xml especificado.Read options for various operation modes from the specified .xml file. A forma curta é /p:.The short form is /p:. Para obter mais informações, consulte a seção comentários .For more information, see the Remarks section.

Opções de arquivo XSDXSD File Options

Você deve especificar somente uma das seguintes opções para arquivos .xsd.You must specify only one of the following options for .xsd files.

OpçãoOption DescriçãoDescription
/c[lasses]/c[lasses] Gera classes que correspondem ao esquema especificado.Generates classes that correspond to the specified schema. Para ler dados XML em um objeto, use o método XmlSerializer.Deserialize.To read XML data into the object, use the XmlSerializer.Deserialize method.
/d[ataset]/d[ataset] Gera uma classe derivada de DataSet que corresponde ao esquema especificado.Generates a class derived from DataSet that corresponds to the specified schema. Para ler dados XML na classe derivada, use o método DataSet.ReadXml.To read XML data into the derived class, use the DataSet.ReadXml method.

Você também pode especificar qualquer uma das seguintes opções para arquivos .xsd.You can also specify any of the following options for .xsd files.

OpçãoOption DescriçãoDescription
/e[lement]: element/e[lement]:element Especifica o elemento no esquema para o qual gerar código.Specifies the element in the schema to generate code for. Por padrão, todos os elementos são tipados.By default all elements are typed. Você pode especificar esse argumento mais de uma vez.You can specify this argument more than once.
/enableDataBinding/enableDataBinding Implementa a interface INotifyPropertyChanged em todos os tipos gerados para habilitar a associação de dados.Implements the INotifyPropertyChanged interface on all generated types to enable data binding. A forma curta é /edb.The short form is /edb.
/enableLinqDataSet/enableLinqDataSet (Forma abreviada: /eld.) Especifica que o DataSet gerado pode ser consultado usando LINQ to DataSet.(Short form: /eld.) Specifies that the generated DataSet can be queried against using LINQ to DataSet. Essa opção é usada quando a opção /dataset também está especificada.This option is used when the /dataset option is also specified. Para obter mais informações, consulte Visão geral do LINQ to DataSet e Consultando DataSets tipados.For more information, see LINQ to DataSet Overview and Querying Typed DataSets. Para obter informações gerais sobre como usar o LINQ, consulte LINQ (consulta integrada à C# linguagem) ou LINQ (consulta integrada à linguagem)-Visual Basic.For general information about using LINQ, see Language-Integrated Query (LINQ) - C# or Language-Integrated Query (LINQ) - Visual Basic.
/f[ields]/f[ields] Gera campos em vez de propriedades.Generates fields instead of properties. Por padrão, as propriedades são geradas.By default, properties are generated.
/l @ no__t-1anguage @ no__t-2: idioma/l[anguage]:language Especifica a linguagem de programação a ser usada.Specifies the programming language to use. Escolha CS (C#, que é o padrão), VB (Visual Basic), JS (JScript), ou VJS (Visual J#).Choose from CS (C#, which is the default), VB (Visual Basic), JS (JScript), or VJS (Visual J#). Você também pode especificar um nome totalmente qualificado para uma classe implementando System.CodeDom.Compiler.CodeDomProviderYou can also specify a fully qualified name for a class implementing System.CodeDom.Compiler.CodeDomProvider
/n[amespace]: namespace/n[amespace]:namespace Especifica o namespace de tempo de execução para os tipos gerados.Specifies the runtime namespace for the generated types. O namespace padrão é Schemas.The default namespace is Schemas.
/nologo/nologo Suprime o banner.Suppresses the banner.
/order/order Gera identificadores de pedido explícito em todos os membros de partícula.Generates explicit order identifiers on all particle members.
/o[ut]: directoryName/o[ut]:directoryName Especifica o diretório de saída no qual colocar os arquivos.Specifies the output directory to place the files in. O padrão é o diretório atual.The default is the current directory.
/u[ri]: uri/u[ri]:uri Especifica o URI para os elementos no esquema para o qual gerar código.Specifies the URI for the elements in the schema to generate code for. Esse URI, se houver, aplica-se a todos os elementos especificados com a opção /element.This URI, if present, applies to all elements specified with the /element option.

Opções de arquivo DLL e EXEDLL and EXE File Options

OpçãoOption DescriçãoDescription
/t[ype]: typename/t[ype]:typename Especifica o nome do tipo para o qual criar um esquema.Specifies the name of the type to create a schema for. Você pode especificar vários argumentos de tipo.You can specify multiple type arguments. Se typename não especificar um namespace, o Xsd.exe corresponderá todos os tipos no assembly com o tipo especificado.If typename does not specify a namespace, Xsd.exe matches all types in the assembly with the specified type. Se typename especificar um namespace, somente esse tipo terá uma correspondência.If typename specifies a namespace, only that type is matched. Se typename terminar com um caractere de asterisco (*), a ferramenta corresponderá todos os tipos que começam com a cadeia de caracteres antes do *.If typename ends with an asterisk character (*), the tool matches all types that start with the string preceding the *. Se você omitir a opção /type, o Xsd.exe gera esquemas para todos os tipos no assembly.If you omit the /type option, Xsd.exe generates schemas for all types in the assembly.

ComentáriosRemarks

A tabela a seguir mostra as operações que o Xsd.exe realiza.The following table shows the operations that Xsd.exe performs.

XDR to XSDXDR to XSD Gera um esquema XML de um arquivo de esquema de dados XML reduzidos.Generates an XML schema from an XML-Data-Reduced schema file. XDR é um formato anterior do esquema baseado em XML.XDR is an early XML-based schema format.
XML to XSDXML to XSD Gera um esquema XML de um arquivo XML.Generates an XML schema from an XML file.
XSD to DataSetXSD to DataSet Gera classes DataSet de common language runtime de um arquivo de esquema XSD.Generates common language runtime DataSet classes from an XSD schema file. As classes geradas fornecem um modelo de objeto ideal para os dados XML regulares.The generated classes provide a rich object model for regular XML data.
XSD para classesXSD to Classes Gera classes de tempo de execução de um arquivo de esquema XSD.Generates runtime classes from an XSD schema file. As classes geradas podem ser usadas em conjunto com System.Xml.Serialization.XmlSerializer para ler e escrever código XML que segue o esquema.The generated classes can be used in conjunction with System.Xml.Serialization.XmlSerializer to read and write XML code that follows the schema.
Classes para XSDClasses to XSD Gera um esquema XML de um tipo ou tipos em um arquivo de assembly de tempo de execução.Generates an XML schema from a type or types in a runtime assembly file. O esquema gerado define o formato XML usado pelo XmlSerializer.The generated schema defines the XML format used by the XmlSerializer.

O Xsd.exe somente permite que você manipule esquemas de XML que seguem a linguagem XSD (linguagem de definição de esquema XML) proposta pelo World Wide Web Consortium (W3C).Xsd.exe only allows you to manipulate XML schemas that follow the XML Schema Definition (XSD) language proposed by the World Wide Web Consortium (W3C). Para obter mais informações sobre a proposta de definição de esquema XML ou o padrão XML, consulte https://w3.org.For more information on the XML Schema Definition proposal or the XML standard, see https://w3.org.

Configurando opções com um arquivo XMLSetting Options with an XML File

Ao usar a opção /parameters, você pode especificar um único arquivo XML que define várias opções.By using the /parameters switch, you can specify a single XML file that sets various options. As opções que você define dependem de como você está usando a ferramenta XSD.exe.The options you can set depend on how you are using the XSD.exe tool. As escolhas incluem gerar esquemas, arquivos de código ou arquivos de código que incluem recursos de DataSet.Choices include generating schemas, generating code files, or generating code files that include DataSet features. Por exemplo, você pode definir o elemento <assembly> para o nome de um executável (.exe) ou arquivo de biblioteca de tipos (.dll) ao gerar um esquema, mas não ao gerar um arquivo de código.For example, you can set the <assembly> element to the name of an executable (.exe) or type library (.dll) file when generating a schema, but not when generating a code file. O XML a seguir mostra como usar o elemento <generateSchemas> com um executável especificado:The following XML shows how to use the <generateSchemas> element with a specified executable:

<!-- This is in a file named GenerateSchemas.xml. -->
<xsd xmlns='http://microsoft.com/dotnet/tools/xsd/'>
<generateSchemas>
   <assembly>ConsoleApplication1.exe</assembly>
</generateSchemas>
</xsd>

Se o XML anterior estiver contido em um arquivo chamado GenerateSchemas.xml, use a opção /parameters digitando o seguinte no prompt de comando e pressionando ENTER:If the preceding XML is contained in a file named GenerateSchemas.xml, then use the /parameters switch by typing the following at a command prompt and pressing ENTER:

 xsd /p:GenerateSchemas.xml

Por outro lado, se você estiver gerando um esquema para um único tipo localizado no assembly, poderá usar o seguinte XML:On the other hand, if you are generating a schema for a single type found in the assembly, you can use the following XML:

<!-- This is in a file named GenerateSchemaFromType.xml. -->
<xsd xmlns='http://microsoft.com/dotnet/tools/xsd/'>
<generateSchemas>
   <type>IDItems</type>
</generateSchemas>
</xsd>

Mas para usar o código precedente, você também deverá fornecer o nome do assembly no prompt de comando.But to use preceding code, you must also supply the name of the assembly at the command prompt. Digite o seguinte em um prompt de comando (supondo que o arquivo XML se chame GenerateSchemaFromType.xml):Type the following at a command prompt (presuming the XML file is named GenerateSchemaFromType.xml):

xsd /p:GenerateSchemaFromType.xml ConsoleApplication1.exe

Você deve especificar somente uma das seguintes opções para o elemento <generateSchemas>.You must specify only one of the following options for the <generateSchemas> element.

ElementoElement DescriçãoDescription
<assembly><assembly> Especifica um assembly do qual gerar o esquema.Specifies an assembly to generate the schema from.
<type><type> Especifica um tipo encontrado em um assembly para o qual gerar um esquema.Specifies a type found in an assembly to generate a schema for.
<xml><xml> Especifica um arquivo XML para o qual gerar um esquema.Specifies an XML file to generate a schema for.
<xdr><xdr> Especifica um arquivo XDR para o qual gerar um esquema.Specifies an XDR file to generate a schema for.

Para gerar um arquivo de código, use o elemento <generateClasses>.To generate a code file, use the <generateClasses> element. O exemplo a seguir gera um arquivo de código.The following example generates a code file. Observe que dois atributos também são mostrados e permitem definir a linguagem de programação e o namespace do arquivo gerado.Note that two attributes are also shown that allow you to set the programming language and namespace of the generated file.

<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 -->

As opções que você pode definir para o elemento <generateClasses> incluem o seguinte.Options you can set for the <generateClasses> element include the following.

ElementoElement DescriçãoDescription
<element><element> Especifica um elemento no arquivo .xsd para o qual gerar código.Specifies an element in the .xsd file to generate code for.
<schemaImporterExtensions><schemaImporterExtensions> Especifica um tipo derivado de uma classe SchemaImporterExtension.Specifies a type derived from the SchemaImporterExtension class.
<schema><schema> Especifica um arquivo de esquema XML para o qual gerar um código.Specifies a XML Schema file to generate code for. Vários arquivos do Esquema XML podem ser especificados usando vários elementos <schema>.Multiple XML Schema files can be specified using multiple <schema> elements.

A tabela a seguir mostra os atributos que também podem ser usados com o elemento <generateClasses>.The following table shows the attributes that can also be used with the <generateClasses> element.

AtributoAttribute DescriçãoDescription
languagelanguage Especifica a linguagem de programação a ser usada.Specifies the programming language to use. Escolha CS (C#, o padrão), VB (Visual Basic), JS (JScript), ou VJS (Visual J#).Choose from CS (C#, the default), VB (Visual Basic), JS (JScript), or VJS (Visual J#). Você também pode especificar um nome totalmente qualificado para uma classe que implementa CodeDomProviderYou can also specify a fully qualified name for a class that implements CodeDomProvider.
namespacenamespace Especifica o namespace para o código gerado.Specifies the namespace for the generated code. O namespace deve estar em conformidade com os padrões CLR (por exemplo, sem caracteres de espaço ou barra invertida).The namespace must conform to CLR standards (for example, no spaces or backslash characters).
opçõesoptions Um dos seguintes valores: none, properties (gera propriedades em vez de campos públicos), order ou enableDataBinding (consulte as opções /order e /enableDataBinding na seção anterior Opções de arquivo XSD).One of the following values: none, properties (generates properties instead of public fields), order, or enableDataBinding (see the /order and /enableDataBinding switches in the preceding XSD File Options section.

Você também pode controlar como o código do DataSet é gerado usando o elemento <generateDataSet>.You can also control how DataSet code is generated by using the <generateDataSet> element. O XML a seguir especifica que o código gerado usa estruturas DataSet (como a classe DataTable) para criar Visual Basic código para um elemento especificado.The following XML specifies that the generated code uses DataSet structures (such as the DataTable class) to create Visual Basic code for a specified element. As estruturas de DataSet geradas darão suporte a consultas LINQ.The generated DataSet structures will support LINQ queries.

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

As opções que você pode definir para o elemento <generateDataSet> incluem o seguinte.Options you can set for the <generateDataSet> element include the following.

ElementoElement DescriçãoDescription
<schema><schema> Especifica um arquivo de esquema XML para o qual gerar um código.Specifies an XML Schema file to generate code for. Vários arquivos do Esquema XML podem ser especificados usando vários elementos <schema>.Multiple XML Schema files can be specified using multiple <schema> elements.

A tabela a seguir mostra os atributos que podem ser usados com o elemento <generateDataSet>.The following table shows the attributes that can be used with the <generateDataSet> element.

AtributoAttribute DescriçãoDescription
enableLinqDataSetenableLinqDataSet Especifica que o DataSet gerado pode ser consultado usando LINQ to DataSet.Specifies that the generated DataSet can be queried against using LINQ to DataSet. O valor padrão é false.The default value is false.
languagelanguage Especifica a linguagem de programação a ser usada.Specifies the programming language to use. Escolha CS (C#, o padrão), VB (Visual Basic), JS (JScript), ou VJS (Visual J#).Choose from CS (C#, the default), VB (Visual Basic), JS (JScript), or VJS (Visual J#). Você também pode especificar um nome totalmente qualificado para uma classe que implementa CodeDomProviderYou can also specify a fully qualified name for a class that implements CodeDomProvider.
namespacenamespace Especifica o namespace para o código gerado.Specifies the namespace for the generated code. O namespace deve estar em conformidade com os padrões CLR (por exemplo, sem caracteres de espaço ou barra invertida).The namespace must conform to CLR standards (for example, no spaces or backslash characters).

Há atributos que você pode definir no elemento <xsd> de nível superior.There are attributes that you can set on the top level <xsd> element. Essas opções podem ser usadas com qualquer um dos elementos filho (<generateSchemas>, <generateClasses> ou <generateDataSet>).These options can be used with any of the child elements (<generateSchemas>, <generateClasses> or <generateDataSet>). O código XML a seguir gera código para um elemento denominado "IDItems" no diretório de saída denominado "MyOutputDirectory".The following XML code generates code for an element named "IDItems" in the output directory named "MyOutputDirectory".

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

A tabela a seguir mostra os atributos que também podem ser usados com o elemento <xsd>.The following table shows the attributes that can also be used with the <xsd> element.

AtributoAttribute DescriçãoDescription
saídaoutput O nome de um diretório onde o esquema ou arquivo de código gerado será colocado.The name of a directory where the generated schema or code file will be placed.
nologonologo Suprime o banner.Suppresses the banner. Definir como true ou false.Set to true or false.
helphelp Exibe sintaxe de comando e opções para a ferramenta.Displays command syntax and options for the tool. Definir como true ou false.Set to true or false.

ExemplosExamples

O comando a seguir gera um esquema XML de myFile.xdr e salva-o no diretório atual.The following command generates an XML schema from myFile.xdr and saves it to the current directory.

xsd myFile.xdr

O comando a seguir gera um esquema XML de myFile.xml e salva-o no diretório especificado.The following command generates an XML schema from myFile.xml and saves it to the specified directory.

xsd myFile.xml /outputdir:myOutputDir

O comando a seguir gera um conjunto de dados que corresponde ao esquema especificado na linguagem C# e salva-o como XSDSchemaFile.cs no diretório atual.The following command generates a data set that corresponds to the specified schema in the C# language and saves it as XSDSchemaFile.cs in the current directory.

xsd /dataset /language:CS XSDSchemaFile.xsd

O comando a seguir gera esquemas XML para todos os tipos no assembly myAssembly.dll e salva-os como schema0.xsd no diretório atual.The following command generates XML schemas for all types in the assembly myAssembly.dll and saves them as schema0.xsd in the current directory.

xsd myAssembly.dll

Consulte tambémSee also