XML Schema Definition Tool (Xsd.exe)XML Schema Definition Tool (Xsd.exe)

Lo strumento XML Schema Definition (Xsd.exe) consente di generare classi Common Language Runtime o XML Schema da file XDR, XML e XSD o da classi di un assembly di runtime.The XML Schema Definition (Xsd.exe) tool generates XML schema or common language runtime classes from XDR, XML, and XSD files, or from classes in a runtime assembly.

SintassiSyntax

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]

ArgomentoArgument

ArgomentoArgument DescrizioneDescription
file.extensionfile.extension Specifica il file di input da convertire.Specifies the input file to convert. È necessario specificare l'estensione come uno dei seguenti: XDR, XML, XSD, DLL o .exe.You must specify the extension as one of the following: .xdr, .xml, .xsd, .dll, or .exe.

Se si specifica un file di schema XDR (estensione xrd), lo schema XRD verrà convertito in uno schema XSD.If you specify an XDR schema file (.xdr extension), Xsd.exe converts the XDR schema to an XSD schema. Il file di output avrà lo stesso nome dello schema XDR, ma un'estensione xsd.The output file has the same name as the XDR schema, but with the .xsd extension.

Se si specifica un file XML (estensione xml), verrà dedotto uno schema dai dati del file e prodotto uno schema XSD.If you specify an XML file (.xml extension), Xsd.exe infers a schema from the data in the file and produces an XSD schema. Il file di output avrà lo stesso nome del file XML, ma un'estensione xsd.The output file has the same name as the XML file, but with the .xsd extension.

Se si specifica un file di XML Schema (estensione xsd), verrà generato codice sorgente per gli oggetti di runtime corrispondenti allo schema XML.If you specify an XML schema file (.xsd extension), Xsd.exe generates source code for runtime objects that correspond to the XML schema.

Se si specifica un file di assembly di runtime (estensione EXE o DLL), verranno generati schemi per uno o più tipi di questo assembly.If you specify a runtime assembly file (.exe or .dll extension), Xsd.exe generates schemas for one or more types in that assembly. È possibile utilizzare l'opzione /type per specificare i tipi per i quali generare schemi.You can use the /type option to specify the types for which to generate schemas. Gli schemi di output vengono denominati schema0.xsd, schema1.xsd e così via.The output schemas are named schema0.xsd, schema1.xsd, and so on. In Xsd.exe vengono prodotti più schemi solo se i tipi forniti specificano uno spazio dei nomi con l'attributo personalizzato XMLRoot.Xsd.exe produces multiple schemas only if the given types specify a namespace using the XMLRoot custom attribute.

Opzioni generaliGeneral Options

OpzioneOption DescrizioneDescription
/h[elp]/h[elp] Visualizza la sintassi e le opzioni di comando dello strumento.Displays command syntax and options for the tool.
/o[utputdir]:directory/o[utputdir]:directory Specifica la directory per i file di output.Specifies the directory for output files. Questo argomento può apparire una sola volta.This argument can appear only once. Il valore predefinito è la directory corrente.The default is the current directory.
/?/? Visualizza la sintassi e le opzioni di comando dello strumento.Displays command syntax and options for the tool.
/p[arameters]:file.xml/p[arameters]:file.xml Legge le opzioni per diverse modalità operative dal file con estensione xml specificato.Read options for various operation modes from the specified .xml file. La forma abbreviata è /p:.The short form is /p:. Per altre informazioni, vedere la osservazioni sezione.For more information, see the Remarks section.

Opzioni per i file XSDXSD File Options

È necessario specificare una sola delle opzioni elencate di seguito per i file XSD.You must specify only one of the following options for .xsd files.

OpzioneOption DescrizioneDescription
/c[lasses]/c[lasses] Genera classi che corrispondono allo schema specificato.Generates classes that correspond to the specified schema. Per leggere i dati XML nell'oggetto, usare il metodo XmlSerializer.Deserialize.To read XML data into the object, use the XmlSerializer.Deserialize method.
/d[ataset]/d[ataset] Genera una classe derivata da DataSet che corrisponde allo schema specificato.Generates a class derived from DataSet that corresponds to the specified schema. Per leggere i dati XML nella classe derivata, usare il metodo DataSet.ReadXml.To read XML data into the derived class, use the DataSet.ReadXml method.

È inoltre possibile specificare una o più opzioni tra quelle riportate di seguito per i file XSD.You can also specify any of the following options for .xsd files.

OpzioneOption DescrizioneDescription
/e[lement]:element/e[lement]:element Specifica l'elemento dello schema per il quale generare codice.Specifies the element in the schema to generate code for. Per impostazione predefinita, sono specificati tutti gli elementi.By default all elements are typed. È possibile specificare questo argomento più volte.You can specify this argument more than once.
/enableDataBinding/enableDataBinding Implementa l'interfaccia INotifyPropertyChanged su tutti i tipi generati per consentire l'associazione dati.Implements the INotifyPropertyChanged interface on all generated types to enable data binding. La forma abbreviata è /edb.The short form is /edb.
/enableLinqDataSet/enableLinqDataSet (forma abbreviata: /eld). Specifica che il dataset generato può essere sottoposto a query mediante LINQ to DataSet.(Short form: /eld.) Specifies that the generated DataSet can be queried against using LINQ to DataSet. Questa opzione viene utilizzata quando è specificata anche l'opzione per i /dataset .This option is used when the /dataset option is also specified. Per altre informazioni, vedere LINQ to DataSet Overview (Panoramica di LINQ to DataSet) e Querying Typed DataSets (Esecuzione di query su dataset tipizzati).For more information, see LINQ to DataSet Overview and Querying Typed DataSets. Per informazioni generali sull'uso di LINQ, vedere Language-Integrated Query (LINQ) - C# oppure Language Integrated Query (LINQ) - Visual Basic.For general information about using LINQ, see Language-Integrated Query (LINQ) - C# or Language-Integrated Query (LINQ) - Visual Basic.
/f[ields]/f[ields] Genera campi anziché proprietà.Generates fields instead of properties. Per impostazione predefinita, vengono generate le proprietà.By default, properties are generated.
/l[anguage]:language/l[anguage]:language Specifica il linguaggio di programmazione da utilizzare.Specifies the programming language to use. È possibile scegliere tra CS (C#, il linguaggio predefinito), VB (Visual Basic), JS (JScript) o VJS (Visual J#).Choose from CS (C#, which is the default), VB (Visual Basic), JS (JScript), or VJS (Visual J#). È anche possibile specificare un nome completo per una classe che implementa System.CodeDom.Compiler.CodeDomProviderYou can also specify a fully qualified name for a class implementing System.CodeDom.Compiler.CodeDomProvider
/n[amespace]:namespace/n[amespace]:namespace Specifica lo spazio dei nomi del runtime per i tipi generati.Specifies the runtime namespace for the generated types. Lo spazio dei nomi predefinito è Schemas.The default namespace is Schemas.
/nologo/nologo Evita la visualizzazione del messaggio di avvio.Suppresses the banner.
/order/order Genera identificatori di ordine espliciti su tutti i membri particella.Generates explicit order identifiers on all particle members.
/o[ut]:directoryName/o[ut]:directoryName Specifica la directory di output in cui inserire i file.Specifies the output directory to place the files in. Il valore predefinito è la directory corrente.The default is the current directory.
/u[ri]:uri/u[ri]:uri Specifica l'URI degli elementi dello schema per il quale generare codice.Specifies the URI for the elements in the schema to generate code for. Questo URI, se presente, viene applicato a tutti gli elementi specificati con l'opzione /element.This URI, if present, applies to all elements specified with the /element option.

Opzioni per i file DLL ed EXEDLL and EXE File Options

OpzioneOption DescrizioneDescription
/t[ype]:typename/t[ype]:typename Specifica il nome del tipo per il quale creare uno schema.Specifies the name of the type to create a schema for. È possibile specificare più argomenti type.You can specify multiple type arguments. Se nometipo non specifica uno spazio dei nomi, Xsd.exe associa tutti i tipi nell'assembly con il tipo specificato.If typename does not specify a namespace, Xsd.exe matches all types in the assembly with the specified type. Se nometipo specifica uno spazio dei nomi, viene associato solo il tipo specifico.If typename specifies a namespace, only that type is matched. Se nometipo termina con un asterisco (*), vengono associati tutti i tipi che iniziano con la stringa che precede *.If typename ends with an asterisk character (*), the tool matches all types that start with the string preceding the *. Se si omette l'opzione /type, verranno generati schemi per tutti i tipi dell'assembly.If you omit the /type option, Xsd.exe generates schemas for all types in the assembly.

NoteRemarks

Nella tabella riportata di seguito vengono illustrate le operazioni eseguite da Xsd.exe.The following table shows the operations that Xsd.exe performs.

Da XDR a XSDXDR to XSD Generare uno schema XML da un file di schema con dati XML ridotti.Generates an XML schema from an XML-Data-Reduced schema file. XDR è un precedente formato di schema basato su XML.XDR is an early XML-based schema format.
Da XML a XSDXML to XSD Generare uno schema XML da un file XML.Generates an XML schema from an XML file.
Da XSD a datasetXSD to DataSet Generare classi DataSet di Common Language Runtime da un file di schema XSD.Generates common language runtime DataSet classes from an XSD schema file. Le classi generate forniscono un modello a oggetti elaborato per i dati XML regolari.The generated classes provide a rich object model for regular XML data.
Da XSD a classiXSD to Classes Generare classi di runtime da un file di schema XSD.Generates runtime classes from an XSD schema file. Le classi generate possono essere utilizzate con System.Xml.Serialization.XmlSerializer per leggere e scrivere il codice XML basato sullo schema.The generated classes can be used in conjunction with System.Xml.Serialization.XmlSerializer to read and write XML code that follows the schema.
Da classi a XSDClasses to XSD Generare uno schema XML da uno o più tipi presenti in un file di assembly di runtime.Generates an XML schema from a type or types in a runtime assembly file. Lo schema generato definisce il formato XML utilizzato per il XmlSerializer.The generated schema defines the XML format used by the 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).Xsd.exe only allows you to manipulate XML schemas that follow the XML Schema Definition (XSD) language proposed by the World Wide Web Consortium (W3C). Per altre informazioni sulla proposta di XML Schema Definition o lo standard XML, vedere https://w3.org.For more information on the XML Schema Definition proposal or the XML standard, see https://w3.org.

Impostazione delle opzioni con un file XMLSetting Options with an XML File

Usando l'opzione /parameters, è possibile specificare un singolo file XML che imposta diverse opzioni.By using the /parameters switch, you can specify a single XML file that sets various options. Le opzioni che è possibile impostare dipendono dalla modalità di utilizzo dello strumento XSD.exe.The options you can set depend on how you are using the XSD.exe tool. È possibile scegliere di generare schemi, file di codice o file di codice con funzionalità DataSet.Choices include generating schemas, generating code files, or generating code files that include DataSet features. 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.For example, you can set the <assembly> element to the name of an executable (.exe) or type library (.dll) file when generating a schema, but not when generating a code file. Nel codice XML riportato di seguito viene illustrato come utilizzare l'elemento <generateSchemas> con un determinato file eseguibile:The following XML shows how to use the <generateSchemas> element with a specified executable:

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

Se il codice XML precedente è contenuto in un file denominato GenerateSchemas.xml, usare l'opzione /parameters digitando quanto segue al prompt dei comandi e premendo INVIO:If the preceding XML is contained in a file named GenerateSchemas.xml, then use the /parameters switch by typing the following at a command prompt and pressing ENTER:

 xsd /p:GenerateSchemas.xml

Se invece si genera uno schema per un singolo tipo trovato nell'assembly, è possibile utilizzare il codice XML riportato di seguito:On the other hand, if you are generating a schema for a single type found in the assembly, you can use the following XML:

<!-- This is in a file named GenerateSchemaFromType.xml. -->
<xsd xmlns='http://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.But to use preceding code, you must also supply the name of the assembly at the command prompt. Se il file XML è denominato GenerateSchemaFromType.xml, digitare la seguente stringa:Type the following at a command prompt (presuming the XML file is named GenerateSchemaFromType.xml):

xsd /p:GenerateSchemaFromType.xml ConsoleApplication1.exe

Per l'elemento <generateSchemas> è necessario specificare solo una delle seguenti opzioni.You must specify only one of the following options for the <generateSchemas> element.

ElementoElement DescrizioneDescription
<assembly><assembly> Specifica un assembly dal quale generare lo schema.Specifies an assembly to generate the schema from.
<type><type> Specifica un tipo trovato in un assembly per il quale generare uno schema.Specifies a type found in an assembly to generate a schema for.
<xml><xml> Specifica un file XML per il quale generare uno schema.Specifies an XML file to generate a schema for.
<xdr><xdr> Specifica un file XDR per il quale generare uno schema.Specifies an XDR file to generate a schema for.

Per generare un file di codice, utilizzare l'elemento <generateClasses>.To generate a code file, use the <generateClasses> element. Nell'esempio riportato di seguito viene generato un file di codice.The following example generates a code file. Sono presenti anche due attributi che consentono di impostare il linguaggio di programmazione e lo spazio dei nomi del file generato.Note that two attributes are also shown that allow you to set the programming language and namespace of the generated file.

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

Per l'elemento <generateClasses> è possibile impostare le seguenti opzioni.Options you can set for the <generateClasses> element include the following.

ElementoElement DescrizioneDescription
<element><element> Specifica un elemento nel file XSD per il quale generare codice.Specifies an element in the .xsd file to generate code for.
<schemaImporterExtensions><schemaImporterExtensions> Specifica un tipo derivato dalla classe SchemaImporterExtension.Specifies a type derived from the SchemaImporterExtension class.
<schema><schema> Specifica un file di XML Schema per il quale generare un codice.Specifies a XML Schema file to generate code for. È possibile specificare più file XML Schema usando più elementi <schema>.Multiple XML Schema files can be specified using multiple <schema> elements.

Nella tabella riportata di seguito sono descritti gli attributi che è possibile utilizzare con l'elemento <generateClasses>.The following table shows the attributes that can also be used with the <generateClasses> element.

AttributoAttribute DescrizioneDescription
languagelanguage Specifica il linguaggio di programmazione da utilizzare.Specifies the programming language to use. È possibile scegliere tra CS (C#, il linguaggio predefinito), VB (Visual Basic), JS (JScript) o VJS (Visual J#).Choose from CS (C#, the default), VB (Visual Basic), JS (JScript), or VJS (Visual J#). È anche possibile specificare un nome completo per una classe che implementa CodeDomProvider.You can also specify a fully qualified name for a class that implements CodeDomProvider.
namespacenamespace Specifica lo spazio dei nomi per il codice generato.Specifies the namespace for the generated code. Lo spazio dei nomi deve essere conforme agli standard CLR, ad esempio non devono essere presenti spazi o barre rovesciate.The namespace must conform to CLR standards (for example, no spaces or backslash characters).
optionsoptions Uno dei valori seguenti: none, properties (genera proprietà invece di campi pubblici), order o enableDataBinding (vedere le opzioni /order e /enableDataBinding nella sezione precedente "Opzioni per i file XSD").One of the following values: none, properties (generates properties instead of public fields), order, or enableDataBinding (see the /order and /enableDataBinding switches in the preceding XSD File Options section.

È anche possibile controllare la modalità di generazione del codice DataSet utilizzando l'elemento <generateDataSet>.You can also control how DataSet code is generated by using the <generateDataSet> element. Il codice XML seguente specifica che il codice generato Usa DataSet strutture (ad esempio il DataTable classe) per creare codice Visual Basic per un elemento specificato.The following XML specifies that the generated code uses DataSet structures (such as the DataTable class) to create Visual Basic code for a specified element. Le strutture di DataSet generate supporteranno le query LINQ.The generated DataSet structures will support LINQ queries.

<xsd xmlns='http://microsoft.com/dotnet/tools/xsd/'>
    <generateDataSet language='VB' namespace='Microsoft.Serialization.Examples' enableLinqDataSet='true'>
    </generateDataSet>
</xsd>

Per l'elemento <generateDataSet> è possibile impostare le seguenti opzioni.Options you can set for the <generateDataSet> element include the following.

ElementoElement DescrizioneDescription
<schema><schema> Specifica un file di XML Schema per il quale generare un codice.Specifies an XML Schema file to generate code for. È possibile specificare più file XML Schema usando più elementi <schema>.Multiple XML Schema files can be specified using multiple <schema> elements.

Nella tabella riportata di seguito sono descritti gli attributi che è possibile utilizzare con l'elemento <generateDataSet>.The following table shows the attributes that can be used with the <generateDataSet> element.

AttributoAttribute DescrizioneDescription
enableLinqDataSetenableLinqDataSet Specifica che il dataset generato può essere sottoposto a query mediante LINQ to DataSet.Specifies that the generated DataSet can be queried against using LINQ to DataSet. Il valore predefinito è false.The default value is false.
languagelanguage Specifica il linguaggio di programmazione da utilizzare.Specifies the programming language to use. È possibile scegliere tra CS (C#, il linguaggio predefinito), VB (Visual Basic), JS (JScript) o VJS (Visual J#).Choose from CS (C#, the default), VB (Visual Basic), JS (JScript), or VJS (Visual J#). È anche possibile specificare un nome completo per una classe che implementa CodeDomProvider.You can also specify a fully qualified name for a class that implements CodeDomProvider.
namespacenamespace Specifica lo spazio dei nomi per il codice generato.Specifies the namespace for the generated code. Lo spazio dei nomi deve essere conforme agli standard CLR, ad esempio non devono essere presenti spazi o barre rovesciate.The namespace must conform to CLR standards (for example, no spaces or backslash characters).

Alcuni attributi possono essere impostati sull'elemento <xsd> di livello più alto.There are attributes that you can set on the top level <xsd> element. È possibile utilizzare queste opzioni con uno qualsiasi degli elementi figlio (<generateSchemas>,<generateClasses> o <generateDataSet>).These options can be used with any of the child elements (<generateSchemas>, <generateClasses> or <generateDataSet>). Nell'esempio di codice XML riportato di seguito viene generato codice per un elemento denominato IDItems nella directory di output MyOutputDirectory.The following XML code generates code for an element named "IDItems" in the output directory named "MyOutputDirectory".

<xsd xmlns='http://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>.The following table shows the attributes that can also be used with the <xsd> element.

AttributoAttribute DescrizioneDescription
outputoutput Nome della directory in cui verrà inserito lo schema o il file di codice generato.The name of a directory where the generated schema or code file will be placed.
nologonologo Evita la visualizzazione del messaggio di avvio.Suppresses the banner. Impostare su true o false.Set to true or false.
guidahelp Visualizza la sintassi e le opzioni di comando dello strumento.Displays command syntax and options for the tool. Impostare su true o false.Set to true or false.

EsempiExamples

Il comando che segue genera uno schema XML da myFile.xdr e lo salva nella directory corrente.The following command generates an XML schema from myFile.xdr and saves it to the current directory.

xsd myFile.xdr

Il comando che segue genera uno schema XML da myFile.xml e lo salva nella directory specificata.The following command generates an XML schema from myFile.xml and saves it to the specified directory.

xsd myFile.xml /outputdir:myOutputDir

Il comando che segue genera un set di dati che corrisponde allo schema specificato nel linguaggio C# e lo salva con il nome XSDSchemaFile.cs nella directory corrente.The following command generates a data set that corresponds to the specified schema in the C# language and saves it as XSDSchemaFile.cs in the current directory.

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.The following command generates XML schemas for all types in the assembly myAssembly.dll and saves them as schema0.xsd in the current directory.

xsd myAssembly.dll

Vedere ancheSee also