Compartilhar via


Ferramenta de Definição de Esquema XML (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.

A ferramenta de Definição de Esquema XML (Xsd.exe) geralmente pode ser encontrada no seguinte caminho:
C:\Arquivos de Programas (x86)\Microsoft SDKs\Windows\{version}\bin\NETFX {version} Tools\

Sintaxe

Execute a ferramenta na linha de comando.

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]

Dica

Para que as ferramentas do .NET Framework funcionem corretamente, você deve definir PathIncludesuas variáveis de ambiente e Lib de ambiente corretamente. Defina essas variáveis de ambiente executando SDKVars.bat, que está localizado no <diretório SDK>\<version>\Bin. SDKVars.bat deve ser executado em todos os shells de comando.

Argumento

Argumento Descrição
file.extension Especifica o arquivo de entrada a ser convertido. Você deve especificar a extensão como uma das seguintes: .xdr, .xml, .xsd, .dllou .exe.

Se você especificar um arquivo de esquema XDR (extensão .xdr), Xsd.exe converterá o esquema XDR em um esquema XSD. O arquivo de saída tem o mesmo nome que o esquema XDR, mas com a extensão .xsd.

Se você especificar um arquivo XML (extensão.xml), Xsd.exe inferirá um esquema dos dados no arquivo e produzirá um esquema XSD. O arquivo de saída tem o mesmo nome do arquivo XML, mas com a extensão .xsd.

Se você especificar um arquivo de esquema XML (extensão .xsd), Xsd.exe gerará o código-fonte para objetos de runtime que correspondem ao esquema XML.

Se você especificar um arquivo de assembly de runtime (.exe ou extensão .dll), Xsd.exe gerará esquemas para um ou mais tipos nesse assembly. Você pode usar a opção /type para especificar os tipos para os quais gerar esquemas. Os esquemas de saída são denominados schema0.xsd, schema1.xsd e assim por diante. Xsd.exe produzirá vários esquemas somente se os tipos especificados especificarem um namespace usando o XMLRoot atributo personalizado.

Opções gerais

Opção Descrição
/h[elp] Exibe sintaxe de comando e opções para a ferramenta.
/o[utputdir]:directory Especifica o diretório para arquivos de saída. Esse argumento pode aparecer apenas uma vez. O padrão é o diretório atual.
/? Exibe sintaxe de comando e opções para a ferramenta.
/p[arameters]:file.xml Leia as opções para diferentes modos de operação do arquivo especificado .xml. O formato curto é /p:. Para obter mais informações, consulte a seção Comentários.

Opções de arquivo XSD

Você deve especificar apenas uma das opções a seguir para arquivos .xsd.

Opção Descrição
/c[lasses] Gera classes que correspondem ao esquema especificado. Para ler dados XML no objeto, use o XmlSerializer.Deserialize método.
/d[ataset] Gera uma classe derivada da DataSet qual corresponde ao esquema especificado. Para ler dados XML na classe derivada, use o DataSet.ReadXml método.

Você também pode especificar qualquer uma das opções a seguir para arquivos .xsd.

Opção Descrição
/e[lement]:element Especifica o elemento no esquema para o qual gerar código. Por padrão, todos os elementos são tipados. Você pode especificar esse argumento mais de uma vez.
/enableDataBinding Implementa a INotifyPropertyChanged interface em todos os tipos gerados para habilitar a associação de dados. O formato curto é /edb.
/enableLinqDataSet (Forma curta: /eld.) Especifica que o Conjunto de Dados gerado pode ser consultado usando LINQ to DataSet. Essa opção é usada quando a opção /dataset também é especificada. Para obter mais informações, consulte Visão geral do LINQ to DataSet e Consultando DataSets tipados. Para obter informações gerais sobre como usar LINQ, consulte Language-Integrated Query (LINQ) – C# ou Language-Integrated Query (LINQ) – Visual Basic.
/f[ields] Gera apenas campos. Por padrão, as propriedades com campos de backup são geradas.
/l[anguage]:language Especifica a linguagem de programação a ser usada. CS Escolha entre (C#, que é o padrão), VB (Visual Basic), JS (JScript) ou VJS (Visual J#). Você também pode especificar um nome totalmente qualificado para uma classe implementando System.CodeDom.Compiler.CodeDomProvider
/n[amespace]:namespace Especifica o namespace de runtime para os tipos gerados. O namespace padrão é Schemas.
/nologo Oculta o banner.
/ordem Gera identificadores de ordem explícitos em todos os membros de partículas.
/o[ut]:directoryName Especifica o diretório de saída no qual os arquivos serão colocados. O padrão é o diretório atual.
/u[ri]:uri Especifica o URI para os elementos no esquema para o qual gerar código. Esse URI, se presente, se aplica a todos os elementos especificados com a opção /element .

Opções de arquivo DLL e EXE

Opção Descrição
/t[ype]:typename Especifica o nome do tipo para o qual criar um esquema. Você pode especificar vários argumentos de tipo. Se typename não especificar um namespace, o Xsd.exe corresponderá todos os tipos no assembly com o tipo especificado. Se o nome de tipo especificar um namespace, somente esse tipo será correspondido. Se o nome de tipo terminar com um caractere de asterisco (*), a ferramenta corresponderá a todos os tipos que começam com a cadeia de caracteres anterior à *. Se você omitir a opção /type, o Xsd.exe gera esquemas para todos os tipos no assembly.

Observações

A tabela a seguir mostra as operações que Xsd.exe executa.

Operação Descrição
XDR para XSD Gera um esquema XML de um arquivo de esquema XML-Data-Reduced. XDR é um formato de esquema baseado em XML inicial.
XML para XSD Gera um esquema XML de um arquivo XML.
XSD para DataSet Gera classes CLR DataSet a partir de um arquivo de esquema XSD. As classes geradas fornecem um modelo de objeto avançado para dados XML regulares.
XSD para classes Gera classes de runtime de um arquivo de esquema XSD. As classes geradas podem ser usadas em conjunto com System.Xml.Serialization.XmlSerializer para ler e gravar código XML que segue o esquema.
Classes para XSD Gera um esquema XML de um tipo ou tipos em um arquivo de assembly de runtime. O esquema gerado define o formato XML usado pelo XmlSerializer.

Xsd.exe só permite manipular esquemas XML que seguem a linguagem XSD (Definição de Esquema XML) proposta pelo W3C (World Wide Web Consortium). Para obter mais informações sobre a proposta de Definição de Esquema XML ou o padrão XML, consulte https://w3.org.

Opções de configuração com um arquivo XML

Usando a opção /parameters , você pode especificar um único arquivo XML que define várias opções. As opções que você pode definir dependem de como você está usando a ferramenta XSD.exe. As opções incluem a geração de esquemas, a geração de arquivos de código ou a geração de arquivos de código que incluem DataSet recursos. Por exemplo, você pode definir o <assembly> elemento como o nome de um arquivo executável (.exe) ou biblioteca de tipos (.dll) ao gerar um esquema, mas não ao gerar um arquivo de código. O XML a seguir mostra como usar o <generateSchemas> elemento com um executável especificado:

<!-- 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 em um prompt de comando e pressionando Enter:

 xsd /p:GenerateSchemas.xml

Por outro lado, se você estiver gerando um esquema para um único tipo encontrado no assembly, poderá usar o seguinte 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. Insira o seguinte em um prompt de comando (presumindo que o arquivo XML seja nomeado GenerateSchemaFromType.xml):

xsd /p:GenerateSchemaFromType.xml ConsoleApplication1.exe

Você deve especificar apenas uma das opções a seguir para o <generateSchemas> elemento.

Elemento Descrição
<assembléia> Especifica um assembly do qual gerar o esquema.
<tipo> Especifica um tipo encontrado em um assembly para o qual gerar um esquema.
<XML> Especifica um arquivo XML para o qual gerar um esquema.
<Xdr> Especifica um arquivo XDR para o qual gerar um esquema.

Para gerar um arquivo de código, use o <generateClasses> elemento. O exemplo a seguir gera um arquivo de código. Observe que dois atributos também são mostrados que permitem definir a linguagem de programação e o namespace do arquivo gerado.

<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 <generateClasses> elemento incluem o seguinte.

Elemento Descrição
<elemento> Especifica um elemento no arquivo .xsd para o qual gerar código.
<schemaImporterExtensions> Especifica um tipo derivado da SchemaImporterExtension classe.
<esquema> Especifica um arquivo de esquema XML para o qual gerar código. Vários arquivos de esquema XML podem ser especificados usando vários <elementos de esquema> .

A tabela a seguir mostra os atributos que também podem ser usados com o <generateClasses> elemento.

Atributo Descrição
Idioma Especifica a linguagem de programação a ser usada. Escolha entre CS (C#, o padrão), VB (Visual Basic), JS (JScript) ou VJS (Visual J#). Você também pode especificar um nome totalmente qualificado para uma classe que implementa CodeDomProvider.
Espaço de nomes Especifica o namespace para o código gerado. O namespace deve estar em conformidade com os padrões CLR (por exemplo, sem espaços ou caracteres de barra invertida).
Opções Um dos seguintes valores: none, properties (gera propriedades em vez de campos públicos), order, ou enableDataBinding (veja as opções de alternância /order e /enableDataBinding na seção de Opções de Arquivo XSD anterior).

Você também pode controlar como o código DataSet é gerado usando o elemento <generateDataSet>. O XML a seguir especifica que o código gerado usa estruturas DataSet (como a classe DataTable) para criar o código do Visual Basic para um elemento especificado. As estruturas de DataSet geradas darão suporte a consultas LINQ.

<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 <generateDataSet> elemento incluem o seguinte.

Elemento Descrição
<esquema> Especifica um arquivo de esquema XML para o qual gerar código. Vários arquivos de esquema XML podem ser especificados usando vários <elementos de esquema> .

A tabela a seguir mostra os atributos que podem ser usados com o <generateDataSet> elemento.

Atributo Descrição
enableLinqDataSet Especifica que o DataSet gerado pode ser consultado usando LINQ to DataSet. O valor padrão é false.
Idioma Especifica a linguagem de programação a ser usada. Escolha entre CS (C#, o padrão), VB (Visual Basic), JS (JScript) ou VJS (Visual J#). Você também pode especificar um nome totalmente qualificado para uma classe que implementa CodeDomProvider.
Espaço de nomes Especifica o namespace para o código gerado. O namespace deve estar em conformidade com os padrões CLR (por exemplo, sem espaços ou caracteres de barra invertida).

Há atributos que você pode definir no elemento de nível <xsd> superior. Essas opções podem ser usadas com qualquer um dos elementos filho (<generateSchemas>, <generateClasses> ou <generateDataSet>). O código XML a seguir gera código para um elemento chamado "IDItems" no diretório de saída chamado "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 <xsd> elemento.

Atributo Descrição
saída O nome de um diretório em que o esquema gerado ou o arquivo de código serão colocados.
nologo Oculta o banner. Definir como true ou false.
ajuda Exibe sintaxe de comando e opções para a ferramenta. Definir como true ou false.

Exemplos

O comando a seguir gera um esquema XML de myFile.xdr e o salva no diretório atual.

xsd myFile.xdr

O comando a seguir gera um esquema myFile.xml XML e o salva no diretório especificado.

xsd myFile.xml /outputdir:myOutputDir

O comando a seguir gera um conjunto de dados que corresponde ao esquema especificado no idioma C# e o salva como XSDSchemaFile.cs no diretório atual.

xsd /dataset /language:CS XSDSchemaFile.xsd

O comando a seguir gera esquemas XML para todos os tipos no assembly myAssembly.dll e os salva como schema0.xsd no diretório atual.

xsd myAssembly.dll

Consulte também