Partilhar via


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

A ferramenta Definição de esquema XML (Xsd.exe) gera esquemas XML ou classes de Tempo de Execução da Linguagem Comum a partir de ficheiros XDR, XML e XSD, ou de classes num assembly em 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]

Sugestão

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 Descrição
arquivo.extensão 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 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 especificar um arquivo de assembly em tempo de execução (extensões.exe ou .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 Descrição
/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 Leia opções para vários modos de operação a partir do ficheiro .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 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 de DataSet que 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 Descrição
/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 INotifyPropertyChanged em todos os tipos gerados para habilitar a 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 do ambiente 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 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, 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 *. Caso omita a opção /type, Xsd.exe gerará esquemas para todos os tipos no assembly.

Observações

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

Funcionamento Descrição
XDR para XSD Gera um esquema XML a partir de um ficheiro de esquema XMLData-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 runtime de linguagem comum a partir de um ficheiro 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 ou mais tipos em um ficheiro 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, deve-se também fornecer o nome do assembly no prompt de comando. Digite o seguinte em um prompt de comando (presumindo que o arquivo XML é nomeado GenerateSchemaFromType.xml):

xsd /p:GenerateSchemaFromType.xml ConsoleApplication1.exe

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

Elemento Descrição
<montagem> Especifica um assembly a partir 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. Múltiplos ficheiros XML Schema podem ser especificados usando múltiplos <schema> elementos.

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

Atributo Descrição
linguagem 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 qualificado completo 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 /order e /enableDataBinding na seção anterior de Opções de Ficheiro XSD).

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 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 Descrição
<Esquema> Especifica um arquivo de esquema XML para o qual gerar código. Múltiplos ficheiros XML Schema podem ser especificados usando múltiplos <schema> elementos.

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 predefinido é false.
linguagem 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 qualificado completo 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 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 a partir de myFile.xdr e salva-o no diretório atual.

xsd myFile.xdr

O comando a seguir gera um esquema XML a partir de myFile.xml e salva-o 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

Ver também