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.

 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]

Argumento

Argumento

Descrição

file.extension

Especifica o arquivo de entrada para ser convertido. Você deve especificar a extensãocomo uma das seguintes: .xdr, .xml, .xsd, .dll ou .exe.

Se você especificar um arquivo de esquema XDR (extensão .xdr), o 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), o Xsd.exe deduzirá um esquema 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), o Xsd.exe gerará o código de origem para objetos em tempo de execução que correspondem ao esquema XML.

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. Você pode usar a opção /type 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. O Xsd.exe produzirá vários esquemas somente se os determinados tipos especificarem um namespace usando o atributo personalizado XMLRoot.

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 somente uma vez. O padrão é o diretório atual.

/?

Exibe sintaxe de comando e opções para a ferramenta.

/P[arameters]:file.xml

As opções de leitura para vários modos de operação do arquivo .xml especificado. A forma curta é '/p:'. Para obter mais informações, consulte a seção Comentários a seguir.

Opções de arquivo XSD

Você deve especificar somente 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 método System.Xml.Serialization.XmlSerializer.Deserializer.

/d[ataset]

Gera uma classe derivada de DataSet que corresponde ao esquema especificado. Para ler dados XML na classe derivada, use o método System.Data.DataSet.ReadXml.

Você também pode especificar qualquer uma das seguintes opções 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 interface INotifyPropertyChanged em todos os tipos gerados para habilitar a associação de dados. A forma curta é '/edb'.

/enableLinqDataSet

(Forma abreviada: /eld.) Especifica que o DataSet gerado pode ser consultado usando LINQ to DataSet. Essa opção é usada quando a opção /dataset também está especificada. Para obter mais informações, consulte LINQ para visão geral do DataSet e Consultando DataSets tipados. Para obter informações gerais sobre como usar o LINQ, consulte LINQ (Consulta Integrada à Linguagem).

/f[ields]

Gera campos em vez de propriedades. Por padrão, as propriedades são geradas.

/l[anguage]:language

Especifica a linguagem de programação a ser usada. Escolha 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 classe implementando 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.

/order

Gera identificadores de pedido explícito em todos os membros de partícula.

/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 para os elementos no esquema para o qual gerar código. Esse URI, se houver, aplica-se 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 typename especificar um namespace, somente esse tipo corresponderá. Se o typename terminar com um caractere de asterisco (*), a ferramenta corresponderá todos os tipos que comecem com a cadeia de caracteres antes do *. Se você omitir a opção /type, o Xsd.exe gera esquemas para todos os tipos no assembly.

Comentários

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

  • XDR to XSD
    Gera um esquema XML de um arquivo de esquema de dados XML reduzidos. XDR é um formato anterior do esquema baseado em XML.

  • XML to XSD
    Gera um esquema XML de um arquivo XML.

  • XSD to DataSet
    Gera classes DataSet de common language runtime de um arquivo de esquema XSD. As classes geradas fornecem um modelo de objeto ideal para os dados XML regulares.

  • XSD para classes
    Gera classes de tempo de execução de um arquivo de esquema XSD. As classes geradas podem ser usadas em conjunto com XmlSerializer para ler e escrever 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 tempo de execução. O esquema gerado define o formato XML usado pelo System.Xml.Serialization.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). Para obter mais informações sobre a proposta de definição do Esquema XML ou o padrão XML, consulte http://w3.org.

Configurando opções com um arquivo XML

Ao usar a opção /parameters, você pode especificar um único arquivo XML que define várias opções. As opções que você define dependem de como você está usando a ferramenta XSD.exe. As escolhas incluem gerar esquemas, arquivos de código ou arquivos de código que incluem recursos de DataSet. 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. O XML a seguir mostra como usar o elemento <generateSchemas> com um executável especificado:

<!-- This is in a file named GenerateSchemas.xml. -->
<xsd xmlns='https://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:

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:

<!-- This is in a file named GenerateSchemaFromType.xml. -->
<xsd xmlns='https://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. Digite o seguinte em um prompt de comando (supondo que o arquivo XML se chame GenerateSchemaFromType.xml):

xsd /p:GenerateSchemaFromType.xml ConsoleApplication1.exe

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

Elemento

Descrição

< assembly >

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 elemento <generateClasses>. O exemplo a seguir gera um arquivo de código. Observe que dois atributos também são mostrados e permitem definir a linguagem de programação e o namespace do arquivo gerado.

<xsd xmlns='https://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.

Elemento

Descrição

< elemento >

Especifica um elemento no arquivo .xsd para o qual gerar código.

< schemaImporterExtensions >

Especifica um tipo derivado de uma classe SchemaImporterExtension.

< schema >

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

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

Atributo

Descrição

linguagem

Especifica a linguagem de programação a ser usada. Escolha 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

namespace

Especifica o namespace para o código gerado. O namespace deve estar em conformidade com os padrões CLR (por exemplo, sem caracteres de espaço ou barra invertida).

opções

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.

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

<xsd xmlns='https://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.

Elemento

Descrição

< schema >

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

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

Atributo

Descrição

enableLinqDataSet

Especifica que o DataSet gerado pode ser consultado usando LINQ to DataSet. O valor padrão é false.

linguagem

Especifica a linguagem de programação a ser usada. Escolha 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

namespace

Especifica o namespace para o código gerado. O namespace deve estar em conformidade com os padrões CLR (por exemplo, sem caracteres de espaço ou barra invertida).

Há atributos que você pode definir no elemento <xsd> de nível 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 denominado "IDItems" no diretório de saída denominado "MyOutputDirectory".

<xsd xmlns='https://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>.

Atributo

Descrição

saída

O nome de um diretório onde o esquema ou arquivo de código gerado será colocado.

nologo

Suprime o banner. Definir como true ou false.

help

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 salva-o no diretório atual.

xsd myFile.xdr 

O comando a seguir gera um esquema XML 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 salva-o 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 salva-os como schema0.xsd no diretório atual.

xsd myAssembly.dll  

Consulte também

Referência

DataSet

System.Xml.Serialization.XmlSerializer.Deserializer

XmlSerializer

Prompt de comando do Visual Studio

Conceitos

LINQ para visão geral do DataSet

Consultando DataSets tipados

Outros recursos

Ferramentas do .NET Framework

LINQ (Consulta Integrada à Linguagem)