Partilhar via


Ferramenta de definição de esquema XML (Xsd.exe)

A ferramenta XML Schema Definition (Xsd.exe) gera classes de esquema XML ou common language runtime a partir de arquivos XDR, XML e XSD 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 a partir da 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]

Gorjeta

Para que as ferramentas do .NET Framework funcionem corretamente, você deve definir suas Pathvariáveis , Includee 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 cada shell de comando.

Argumento

Argumento Description
arquivo.extension Especifica o arquivo de entrada a ser convertido. Você deve especificar a extensão como uma das seguintes: .xdr, .xml, .xsd, .dll ou .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 a partir dos dados no arquivo e produzirá um esquema XSD. O arquivo de saída tem o mesmo nome que o arquivo XML, mas com a extensão .xsd.

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

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

Opções Gerais

Opção Description
/h[ELP] Exibe a sintaxe do comando e as opções da ferramenta.
/o[utputdir]:diretório Especifica o diretório para arquivos de saída. Este argumento só pode aparecer uma vez. O padrão é o diretório atual.
/? Exibe a sintaxe do comando e as opções da ferramenta.
/p[arameters]:file.xml Opções de leitura para vários modos de operação a partir do arquivo .xml especificado. A forma abreviada é /p:. Para obter mais informações, consulte a seção Observações .

Opções de arquivo XSD

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

Opção Description
/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 que DataSet 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 seguintes opções para arquivos .xsd.

Opção Description
/e[lement]:elemento Especifica o elemento no esquema para o qual gerar código. Por padrão, todos os elementos são digitados. Você pode especificar esse argumento mais de uma vez.
/enableDataBinding Implementa a interface em todos os tipos gerados para habilitar a INotifyPropertyChanged vinculação de dados. A forma abreviada é /edb.
/enableLinqDataSet (Forma abreviada: /eld.) Especifica que o DataSet gerado pode ser consultado usando LINQ to DataSet. Esta 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 conjuntos de dados tipados. Para obter informações gerais sobre como usar o 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 suporte são geradas.
/l[anguage]:língua Especifica a linguagem de programação a ser usada. Escolha entre CS (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 implementação de classe System.CodeDom.Compiler.CodeDomProvider
/n[amespace]:namespace Especifica o namespace de tempo de execução para os tipos gerados. O namespace padrão é Schemas.
/nologo Suprime 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 colocar os arquivos. O padrão é o diretório atual.
/u[ri]:uri Especifica o URI dos elementos no esquema para o qual gerar código. Esse URI, se presente, aplica-se a todos os elementos especificados com a /element opção.

Opções de arquivo DLL e EXE

Opção Description
/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, Xsd.exe corresponderá a todos os tipos no assembly com o tipo especificado. Se typename especificar um namespace, somente esse tipo será correspondido. Se typename terminar com um caractere de asterisco (*), a ferramenta corresponderá a todos os tipos que começam com a cadeia de caracteres que precede *. Se você omitir a /type opção, Xsd.exe gerará esquemas para todos os tipos no assembly.

Observações

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

Operation Description
XDR para XSD Gera um esquema XML a partir de um arquivo de esquema XML-Data-Reduced . XDR é um formato de esquema baseado em XML inicial.
XML para XSD Gera um esquema XML a partir de um arquivo XML.
XSD para DataSet Gera classes de tempo de execução DataSet de linguagem comum 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 tempo de execução a partir de um arquivo de esquema XSD. As classes geradas podem ser usadas em conjunto com System.Xml.Serialization.XmlSerializer para ler e escrever código XML que segue o esquema.
Classes para XSD Gera um esquema XML a partir de um tipo ou tipos em um arquivo assembly de tempo de execução. O esquema gerado define o formato XML usado pelo XmlSerializer.

Xsd.exe só permite manipular esquemas XML que seguem a linguagem XSD (XML Schema Definition) proposta pelo 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.

Definindo opções com um arquivo XML

Usando a /parameters opção, 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 gerar esquemas, gerar arquivos de código ou gerar 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 /parameters opção 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 anterior, você também deve fornecer o nome do assembly no prompt de comando. Digite o seguinte em um prompt de comando (presumindo que o arquivo XML tenha o nome GenerateSchemaFromType.xml):

xsd /p:GenerateSchemaFromType.xml ConsoleApplication1.exe

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

Elemento Description
<montagem> Especifica um assembly a partir do qual gerar o esquema.
<type> 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 Description
<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 Description
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 CodeDomProvidero .
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).
options Um dos seguintes valores: none, properties (gera propriedades em vez de campos públicos), orderou enableDataBinding (consulte as /order opções e /enableDataBinding na seção Opções de arquivo XSD anterior.

Você também pode controlar como DataSet o código é gerado usando o <generateDataSet> elemento . O XML a seguir especifica que o código gerado usa DataSet estruturas (como a DataTable classe) para criar código do Visual Basic para um elemento especificado. As estruturas DataSet geradas suportarão 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 Description
<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 Description
enableLinqDataSet Especifica que o DataSet gerado pode ser consultado usando LINQ to DataSet. O valor predefinido é 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 CodeDomProvidero .
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 Description
saída O nome de um diretório onde o esquema gerado ou o arquivo de código será colocado.
Nologo Suprime o banner. Defina como true ou false.
ajuda Exibe a sintaxe do comando e as opções da ferramenta. Defina como true ou false.

Exemplos

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

xsd myFile.xdr

O comando a seguir gera um esquema XML e myFile.xml 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 na linguagem 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