Strumento di definizione di schemi XML (Xsd.exe)

Lo strumento di definizione di schemi XML (Xsd.exe) consente di generare schemi XML o classi Common Language Runtime da file XDR, XML e XSD o da classi di un assembly di runtime.

xsd file.xdr [/outputdir:directory][/parameters:file.xml]
xsd file.xml [/outputdir:directory] [/parameters:file.xml]
xsd file.xsd {/classes | /dataset} [/element:element]
             [/language:language] [/namespace:namespace]
             [/outputdir:directory] [URI:uri] [/parameters:file.xml]
xsd {file.dll | file.exe} [/outputdir:directory] [/type:typename [...]][/parameters:file.xml]

Argomento

Argomento Descrizione

file.extension

Specifica il file di input da convertire. È necessario specificare un'estensione di tipo xdr, xml, xsd, dll o exe.

Se si specifica un file di schema XDR (estensione xrd), lo schema XRD verrà convertito in uno schema XSD. Il file di output avrà lo stesso nome dello schema XDR, ma un'estensione XSD.

Se si specifica un file XML (estensione xml), verrà dedotto uno schema dai dati del file e prodotto uno schema XSD. Il file di output avrà lo stesso nome del file XML, ma un'estensione XSD.

Se si specifica un file di schema XML (estensione XSD), verrà generato codice sorgente per gli oggetti di runtime corrispondenti allo schema XML.

Se si specifica un file assembly di runtime (estensione EXE o DLL), verranno generati schemi per uno o più tipi di questo assembly. È possibile utilizzare l'opzione /type per specificare i tipi per i quali generare schemi. Gli schemi di output vengono denominati schema0.xsd, schema1.xsd e così via. In Xsd.exe vengono prodotti più schemi solo se i tipi forniti specificano uno spazio dei nomi con l'attributo personalizzato XMLRoot.

Opzioni generali

Opzione Descrizione

/h[elp]

Visualizza la sintassi e le opzioni dei comandi dello strumento.

/o[utputdir]:directory

Specifica la directory per i file di output. Questo argomento può apparire una sola volta. Il valore predefinito è la directory corrente.

/?

Visualizza la sintassi e le opzioni dei comandi dello strumento.

/P[arameters]: file.xml

Legge le opzioni per diverse modalità operative dal file con estensione xml specificato. La forma abbreviata è /p:. Per ulteriori informazioni, vedere la sezione Osservazioni successiva.

Opzioni per i file XSD

È necessario specificare una sola delle opzioni elencate di seguito per i file XSD.

Opzione Descrizione

/c[lasses]

Genera classi che corrispondono allo schema specificato. Per leggere dati XML nell'oggetto, utilizzare il metodo System.Xml.Serialization.XmlSerializer.Deserializer.

/d[ataset]

Genera una classe derivata da DataSet che corrisponde allo schema specificato. Per leggere dati XML nella classe derivata, utilizzare il metodo System.Data.DataSet.ReadXml.

È inoltre possibile specificare una o più opzioni tra quelle riportate di seguito per i file XSD.

Opzione Descrizione

/e[lement]:element

Specifica l'elemento dello schema per il quale generare codice. Per impostazione predefinita, sono specificati tutti gli elementi. È possibile specificare questo argomento più volte.

/enableDataBinding

Implementa l'interfaccia INotifyPropertyChanged su tutti i tipi generati per consentire l'associazione dati. La forma abbreviata è /edb.

/f[ields]

Genera campi anziché proprietà. Per impostazione predefinita, vengono generate le proprietà.

/l[anguage]:language

Specifica il linguaggio di programmazione da utilizzare. È possibile scegliere tra CS (C#, il linguaggio predefinito), VB (Visual Basic), JS (JScript) o VJS (Visual J#). È inoltre possibile specificare un nome completo per una classe che implementa System.CodeDom.Compiler.CodeDomProvider.

/n[amespace]:namespace

Specifica lo spazio dei nomi del runtime per i tipi generati. Lo spazio dei nomi predefinito è Schemas.

/nologo

Evita la visualizzazione del messaggio di avvio.

/order

Genera identificatori di ordine espliciti su tutti i membri particella.

/o[ut]: directoryName

Specifica la directory di output in cui devono essere inseriti i file. La directory predefinita è quella corrente.

/u[ri]:uri

Specifica l'URI degli elementi dello schema per il quale generare codice. Questo URI, se presente, viene applicato a tutti gli elementi specificati con l'opzione /element.

Opzioni per i file DLL ed EXE

Opzione Descrizione

/t[ype]:typename

Specifica il nome del tipo per il quale creare uno schema. È possibile specificare più argomenti /type. Se typename non specifica alcuno spazio dei nomi, il tipo specificato verrà associato a tutti i tipi dell'assembly. Se typename specifica uno spazio dei nomi, il tipo specificato verrà associato solo a tale tipo. Se typename termina con un asterisco (*), verrà creata un'associazione con tutti i tipi che iniziano con la stringa che precede l'asterisco. Se si omette l'opzione /type, verranno generati schemi per tutti i tipi dell'assembly.

Note

Nella tabella riportata di seguito vengono illustrate le operazioni eseguite da Xsd.exe.

  • Da XDR a XSD
    Generare uno schema XML da un file di schema con dati XML ridotti. XDR è un precedente formato di schema basato su XML.
  • Da XML a XSD
    Generare uno schema XML da un file XML.
  • Da XSD a DataSet
    Generare classi DataSet di Common Language Runtime da un file di schema XSD. Le classi generate forniscono un modello di oggetti elaborato per i dati XML regolari.
  • Da XSD a classi
    Generare classi di runtime da un file di schema XSD. Le classi generate possono essere utilizzate con System.Xml.Serialization.XmlSerializer per leggere e scrivere il codice XML basato sullo schema.
  • Da classi a XSD
    Generare uno schema XML da uno o più tipi presenti in un file assembly di runtime. Lo schema generato definisce il formato XML utilizzato da System.Xml.Serialization.XmlSerializer.

Xsd.exe consente solo di modificare gli schemi XML che seguono il linguaggio XSD (XML Schema Definition) proposto da W3C (World Wide Web Consortium). Per ulteriori informazioni sulla proposta XSD o sullo standard XML, visitare il sito http://w3.org (informazioni in lingua inglese).

Impostazione delle opzioni con un file XML

Mediante l'opzione /parameters è possibile specificare un unico file XML in cui sono impostate diverse opzioni. Le opzioni che è possibile impostare dipendono dalla modalità di utilizzo dello strumento XSD.exe. È possibile scegliere di generare schemi, file di codice o file di codice con funzionalità DataSet. Ad esempio, è possibile impostare l'elemento <assembly> sul nome di un file eseguibile (.exe) o di una libreria di tipi (.dll) durante la generazione di uno schema, ma non durante la generazione di un file di codice. Nel codice XML riportato di seguito viene illustrato come utilizzare l'elemento <generateSchemas> con un determinato file eseguibile:

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

Se il codice XML riportato sopra è contenuto in un file denominato GenerateSchemas.xml, utilizzare l'opzione /parameters digitando la seguente stringa al prompt dei comandi e premendo INVIO:

xsd /p:GenerateSchemas.xml

Se invece si genera uno schema per un singolo tipo trovato nell'assembly, è possibile utilizzare il seguente codice XML:

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

Per utilizzare il codice riportato sopra è necessario specificare anche il nome dell'assembly al prompt dei comandi. Se il file XML è denominato GenerateSchemaFromType.xml, digitare la seguente stringa:

xsd /p:GenerateSchemaFromType.xml ConsoleApplication1.exe

Per l'elemento <generateSchemas> è necessario specificare solo una delle seguenti opzioni.

Elemento Descrizione

<assembly>

Specifica un assembly dal quale generare lo schema.

<type>

Specifica un tipo trovato in un assembly per il quale generare uno schema.

<xml>

Specifica un file XML per il quale generare uno schema.

<xdr>

Specifica un file XDR per il quale generare uno schema.

Per generare un file di codice, utilizzare l'elemento <generateClasses>. Nell'esempio riportato di seguito viene generato un file di codice. Sono presenti anche due attributi che consentono di impostare il linguaggio di programmazione e lo spazio dei nomi del file generato.

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

Per l'elemento <generateClasses> è possibile impostare le seguenti opzioni.

Elemento Descrizione

<element>

Specifica un elemento nel file XSD per il quale generare codice.

<schemaImporterExtensions>

Specifica un tipo derivato dalla classe SchemaImporterExtension.

Nella tabella riportata di seguito sono descritti gli attributi che è possibile utilizzare con l'elemento <generateClasses>.

Attributo Descrizione

language

Specifica il linguaggio di programmazione da utilizzare. È possibile scegliere tra CS (C#, il linguaggio predefinito), VB (Visual Basic), JS (JScript) o VJS (Visual J#). È anche possibile specificare un nome completo per una classe che implementa CodeDomProvider.

namespace

Specifica lo spazio dei nomi per il codice generato. Lo spazio dei nomi deve essere conforme agli standard CLR, ad esempio non devono essere presenti spazi o barre rovesciate.

options

Uno dei seguenti valori: none, properties (genera proprietà anziché campi pubblici), order o enableDataBinding. Per informazioni, vedere le opzioni /order e/enableDataBinding nella sezioni precedente "Opzioni per i file XSD".

È anche possibile controllare la modalità di generazione del codice DataSet utilizzando l'elemento <generateDataSets>. Nel codice XML riportato di seguito viene specificato che il codice generato utilizza strutture DataSet, ad esempio la classe DataTable, per creare codice Visual Basic per un determinato elemento.

<xsd xmlns='https://microsoft.com/dotnet/tools/xsd/'>

<generateDataSet language='VB' namespace='Microsoft.Serialization.Examples'>

<element>IDItems</element>

</generateDataSet>

</xsd>

Per l'elemento <generateDataSet> è possibile impostare le seguenti opzioni.

Elemento Descrizione

<element>

Specifica un elemento nel file XSD per il quale generare codice.

Nella tabella riportata di seguito sono descritti gli attributi che è possibile utilizzare con l'elemento <generateDataSet>.

Attributo Descrizione

language

Specifica il linguaggio di programmazione da utilizzare. È possibile scegliere tra CS (C#, il linguaggio predefinito), VB (Visual Basic), JS (JScript) o VJS (Visual J#). È anche possibile specificare un nome completo per una classe che implementa CodeDomProvider.

namespace

Specifica lo spazio dei nomi per il codice generato. Lo spazio dei nomi deve essere conforme agli standard CLR, ad esempio non devono essere presenti spazi o barre rovesciate.

Alcuni attributi possono essere impostati sull'elemento <xsd> di livello più alto. È possibile utilizzare queste opzioni con uno qualsiasi degli elementi figlio (<generateSchemas>, <generateClasses> o <generateDataSet>). Nell'esempio di codice XML riportato di seguito viene generato codice per un elemento denominato IDItems nella directory di output MyOutputDirectory.

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

Nella tabella riportata di seguito sono descritti gli attributi che è possibile utilizzare con l'elemento <xsd>.

Attributo Descrizione

output

Nome della directory in cui verrà inserito lo schema o il file di codice generato.

nologo

Evita la visualizzazione del messaggio di avvio. Impostare su true o false.

help

Visualizza la sintassi e le opzioni dei comandi dello strumento. Impostare su true o false.

Esempi

Il comando che segue genera uno schema XML da myFile.xdr e lo salva nella directory corrente.

xsd myFile.xdr 

Il comando che segue genera uno schema XML da myFile.xml e lo salva nella directory specificata.

xsd myFile.xml /outputdir:myOutputDir

Il comando che segue genera un dataset che corrisponde allo schema specificato nel linguaggio C# e lo salva con il nome XSDSchemaFile.cs nella directory corrente.

xsd /dataset /language:CS XSDSchemaFile.xsd

Il comando che segue genera schemi XML per tutti i tipi dell'assembly myAssembly.dll e li salva con il nome schema0.xsd nella directory corrente.

xsd myAssembly.dll  

Vedere anche

Riferimenti

Strumenti di .NET Framework
DataSet Class
System.Xml.Serialization.XmlSerializer.Deserializer
System.Xml.Serialization.XmlSerializer
Prompt dei comandi di SDK