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

Das XML Schema Definition-Tool (Xsd.exe) generiert XML-Schema- oder Common Language Runtime-Klassen aus XDR-, XML- und XSD-Dateien oder aus Klassen in einer Laufzeitassembly.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.

SyntaxSyntax

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]

ArgumentArgument

ArgumentArgument BeschreibungDescription
file.extensionfile.extension Gibt die zu konvertierende Eingabedatei an.Specifies the input file to convert. Sie müssen die Erweiterung als einen der folgenden angeben: .xdr, .xml, .xsd, .dll oder .exe.You must specify the extension as one of the following: .xdr, .xml, .xsd, .dll, or .exe.

Wenn Sie eine XDR-Schemadatei angeben (Erweiterung .xdr), konvertiert Xsd.exe das XDR-Schema in ein XSD-Schema.If you specify an XDR schema file (.xdr extension), Xsd.exe converts the XDR schema to an XSD schema. Die Ausgabedatei erhält den Namen des XDR-Schemas mit der Erweiterung .xsd.The output file has the same name as the XDR schema, but with the .xsd extension.

Wenn Sie eine XML-Datei angeben (Erweiterung .xml), leitet Xsd.exe ein Schema aus den Daten in der Datei ab und erstellt ein XSD-Schema.If you specify an XML file (.xml extension), Xsd.exe infers a schema from the data in the file and produces an XSD schema. Die Ausgabedatei erhält den Namen der XML-Datei mit der Erweiterung .xsd.The output file has the same name as the XML file, but with the .xsd extension.

Wenn Sie eine XML-Schemadatei angeben (Erweiterung .xsd), generiert Xsd.exe Quellcode für Laufzeitobjekte, die dem XML-Schema entsprechen.If you specify an XML schema file (.xsd extension), Xsd.exe generates source code for runtime objects that correspond to the XML schema.

Wenn Sie eine Laufzeitassemblydatei angeben (Erweiterung .exe oder .dll), generiert Xsd.exe Schemas für einen oder mehrere Typen in der Assembly.If you specify a runtime assembly file (.exe or .dll extension), Xsd.exe generates schemas for one or more types in that assembly. Geben Sie über die /type-Option die Typen an, für die Schemas generiert werden sollen.You can use the /type option to specify the types for which to generate schemas. Die Ausgabeschemas erhalten die Bezeichnungen schema0.xsd, schema1.xsd usw.The output schemas are named schema0.xsd, schema1.xsd, and so on. Xsd.exe erstellt nur dann mehrere Schemas, wenn die angegebenen Typen einen Namespace mit dem benutzerdefinierten XMLRoot-Attribut angeben.Xsd.exe produces multiple schemas only if the given types specify a namespace using the XMLRoot custom attribute.

Allgemeine OptionenGeneral Options

OptionOption BeschreibungDescription
/h[elp]/h[elp] Zeigt Befehlssyntax und Optionen für das Tool an.Displays command syntax and options for the tool.
/o[utputdir]:directory/o[utputdir]:directory Gibt das Verzeichnis für Ausgabedateien an.Specifies the directory for output files. Dieses Argument kann nur einmal angegeben werden.This argument can appear only once. Der Standardwert ist das aktuelle Verzeichnis.The default is the current directory.
/?/? Zeigt Befehlssyntax und Optionen für das Tool an.Displays command syntax and options for the tool.
/p[arameters]:file.xml/p[arameters]:file.xml Liest Optionen für verschiedene Operationsmodi aus der angegebenen XML-Datei.Read options for various operation modes from the specified .xml file. Die Kurzform ist /p:.The short form is /p:. Weitere Informationen finden Sie unter den "Hinweise" Abschnitt.For more information, see the Remarks section.

XSD-DateioptionenXSD File Options

Die beiden folgenden Optionen für XSD-Dateien schließen sich gegenseitig aus.You must specify only one of the following options for .xsd files.

OptionOption BeschreibungDescription
/c[lasses]/c[lasses] Generiert Klassen, die dem angegebenen Schema entsprechen.Generates classes that correspond to the specified schema. Verwenden Sie zum Lesen von XML-Daten in das Objekt die XmlSerializer.Deserialize-Methode.To read XML data into the object, use the XmlSerializer.Deserialize method.
/d[ataset]/d[ataset] Generiert eine von DataSet abgeleitete Klasse, die dem angegebenen Schema entspricht.Generates a class derived from DataSet that corresponds to the specified schema. Verwenden Sie zum Lesen von XML-Daten in die abgeleitete Klasse die DataSet.ReadXml-Methode.To read XML data into the derived class, use the DataSet.ReadXml method.

Zusätzlich können Sie folgende Optionen für XSD-Dateien angeben.You can also specify any of the following options for .xsd files.

OptionOption BeschreibungDescription
/e[lement]:element/e[lement]:element Gibt das Element im Schema an, für das Code generiert werden soll.Specifies the element in the schema to generate code for. In der Standardeinstellung werden für alle Elemente Typen erstellt.By default all elements are typed. Sie können dieses Argument mehrmals angeben.You can specify this argument more than once.
/enableDataBinding/enableDataBinding Implementiert die INotifyPropertyChanged-Schnittstelle für alle generierten Typen, um die Datenbindung zu ermöglichen.Implements the INotifyPropertyChanged interface on all generated types to enable data binding. Die Kurzform ist /edb.The short form is /edb.
/enableLinqDataSet/enableLinqDataSet (Kurzform: /eld.) Gibt an, dass das generierte DataSet mit LINQ to DataSet abgefragt werden kann.(Short form: /eld.) Specifies that the generated DataSet can be queried against using LINQ to DataSet. Diese Option wird verwendet, wenn auch die /dataset-Option angegeben wird.This option is used when the /dataset option is also specified. Weitere Informationen finden Sie unter Übersicht über LINQ to DataSet und Abfragen typisierter DataSets.For more information, see LINQ to DataSet Overview and Querying Typed DataSets. Allgemeine Informationen zur Verwendung von LINQ finden Sie unter Language-Integrated Query (LINQ) - C# oder 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] Generiert Felder anstelle von Eigenschaften.Generates fields instead of properties. Standardmäßig werden Eigenschaften generiert.By default, properties are generated.
/ l[Anguage]:Sprache/l[anguage]:language Gibt die zu verwendende Programmiersprache an.Specifies the programming language to use. Wählen Sie CS (C#, der Standard), VB (Visual Basic), JS (JScript) oder VJS (Visual J#) aus.Choose from CS (C#, which is the default), VB (Visual Basic), JS (JScript), or VJS (Visual J#). Sie können auch einen voll qualifizierten Namen für eine Klasse angeben, die System.CodeDom.Compiler.CodeDomProvider implementiert.You can also specify a fully qualified name for a class implementing System.CodeDom.Compiler.CodeDomProvider
/n[amespace]:namespace/n[amespace]:namespace Gibt den Laufzeitnamespace für die generierten Typen an.Specifies the runtime namespace for the generated types. Der Standardnamespace ist Schemas.The default namespace is Schemas.
/nologo/nologo Unterdrückt das Banner.Suppresses the banner.
/order/order Generiert explizite Reihenfolgebezeichner für alle Abschnittsmember.Generates explicit order identifiers on all particle members.
/o[ut]:directoryName/o[ut]:directoryName Gibt das Ausgabeverzeichnis an, in dem die Dateien gespeichert werden sollen.Specifies the output directory to place the files in. Der Standardwert ist das aktuelle Verzeichnis.The default is the current directory.
/u[ri]:uri/u[ri]:uri Gibt den URI für die Elemente im Schema an, für die Code generiert werden soll.Specifies the URI for the elements in the schema to generate code for. Dieser URI gilt, soweit vorhanden, für alle Elemente, die mit der /element-Option angegeben wurden.This URI, if present, applies to all elements specified with the /element option.

DLL- und EXE-DateioptionenDLL and EXE File Options

OptionOption BeschreibungDescription
/t[ype]:typename/t[ype]:typename Gibt den Namen des Typs an, für den ein Schema erstellt werden soll.Specifies the name of the type to create a schema for. Sie können mehrere Typargumente angeben.You can specify multiple type arguments. Wenn Typname keinen Namespace bezeichnet, ordnet „Xsd.exe“ alle Typen in der Assembly dem angegebenen Typ zu.If typename does not specify a namespace, Xsd.exe matches all types in the assembly with the specified type. Wenn Typname einen Namespace bezeichnet, wird nur der übereinstimmende Typ zugeordnet.If typename specifies a namespace, only that type is matched. Wenn Typname auf ein Sternchen (*) endet, ordnet das Tool alle Typen zu, die mit der Zeichenfolge vor * beginnen.If typename ends with an asterisk character (*), the tool matches all types that start with the string preceding the *. Wenn Sie die /type-Option nicht angeben, generiert Xsd.exe Schemas für alle Typen in der Assembly.If you omit the /type option, Xsd.exe generates schemas for all types in the assembly.

HinweiseRemarks

In der folgenden Tabelle werden die von Xsd.exe ausgeführten Operationen angezeigt.The following table shows the operations that Xsd.exe performs.

XDR nach XSDXDR to XSD Generiert ein XML-Schema aus einer XDR-Schemadatei (XML-Data-Reduced).Generates an XML schema from an XML-Data-Reduced schema file. XDR ist ein früheres XML-Schemaformat.XDR is an early XML-based schema format.
XML nach XSDXML to XSD Generiert ein XML-Schema aus einer XML-Datei.Generates an XML schema from an XML file.
XSD nach DataSetXSD to DataSet Generiert DataSet-Klassen der Common Language Runtime aus einer XSD-Schemadatei.Generates common language runtime DataSet classes from an XSD schema file. Die generierten Klassen stellen ein umfangreiches Objektmodell für reguläre XML-Daten bereit.The generated classes provide a rich object model for regular XML data.
XSD nach KlassenXSD to Classes Generiert Laufzeitklassen aus einer XSD-Schemadatei.Generates runtime classes from an XSD schema file. Die generierten Klassen können in Verbindung mit System.Xml.Serialization.XmlSerializer zum Lesen und Schreiben von XML-Code verwendet werden, der diesem Schema folgt.The generated classes can be used in conjunction with System.Xml.Serialization.XmlSerializer to read and write XML code that follows the schema.
Klassen nach XSDClasses to XSD Generiert ein XML-Schema aus einem oder mehreren Typen in einer Laufzeitassemblydatei.Generates an XML schema from a type or types in a runtime assembly file. Das generierte Schema definiert die XML-Format, das die XmlSerializer.The generated schema defines the XML format used by the XmlSerializer.

Mit Xsd.exe können Sie ausschließlich XML-Schemas ändern, die der durch das World Wide Web Consortium (W3C) veröffentlichten XSD-Sprache (XML Schema Definition language) entsprechen.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). Weitere Informationen zu den XML-Schemadefinition oder dem XML-Standard, finden Sie unter https://w3.org.For more information on the XML Schema Definition proposal or the XML standard, see https://w3.org.

Festlegen von Optionen mit einer XML-DateiSetting Options with an XML File

Mithilfe des /parameters-Schalters können Sie eine einzelne XML-Datei angeben, durch die verschiedene Optionen festgelegt werden.By using the /parameters switch, you can specify a single XML file that sets various options. Welche Optionen Sie festlegen können, richtet sich danach, wie Sie das Tool XSD.exe verwenden.The options you can set depend on how you are using the XSD.exe tool. Zu den möglichen Optionen gehören das Generieren von Schemas oder Codedateien sowie das Generieren von Codedateien, die DataSet-Funktionen umfassen.Choices include generating schemas, generating code files, or generating code files that include DataSet features. So können Sie z.&#160;B. das <assembly>-Element auf den Namen einer ausführbaren Datei (.exe) oder Typbibliothek (.dll) festlegen, wenn Sie ein Schema generieren. Dies gilt jedoch nicht für das Generieren von Codedateien.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. Die folgende XML veranschaulicht die Verwendung des <generateSchemas>-Elements mit einer angegebenen ausführbaren Datei: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>

Wenn die oben aufgeführte XML in einer Datei mit dem Namen GenerateSchemas.xml enthalten ist, verwenden Sie den /parameters-Schalter, indem Sie folgende Zeile an einer Eingabeaufforderung eingeben und EINGABE drücken: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

Wenn Sie jedoch ein Schema für einen einzelnen in der Assembly enthaltenen Typ generieren, können Sie folgende XML verwenden: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>

Um aber den vorangehenden Code zu verwenden, müssen Sie an der Eingabeaufforderung zusätzlich den Namen der Assembly angeben.But to use preceding code, you must also supply the name of the assembly at the command prompt. Geben Sie Folgendes an einer Eingabeaufforderung ein (vorausgesetzt, die XML-Datei hat den Namen GenerateSchemaFromType.xml):Type the following at a command prompt (presuming the XML file is named GenerateSchemaFromType.xml):

xsd /p:GenerateSchemaFromType.xml ConsoleApplication1.exe

Die folgenden Optionen für das <generateSchemas>-Element schließen sich gegenseitig aus.You must specify only one of the following options for the <generateSchemas> element.

ElementElement BeschreibungDescription
<Assembly><assembly> Gibt eine Assembly an, auf deren Grundlage das Schema generiert werden soll.Specifies an assembly to generate the schema from.
<type><type> Gibt einen in einer Assembly enthaltenen Typ an, für den ein Schema generiert werden soll.Specifies a type found in an assembly to generate a schema for.
<xml><xml> Gibt eine XML-Datei an, für die ein Schema generiert werden soll.Specifies an XML file to generate a schema for.
<xdr><xdr> Gibt eine XDR-Datei an, für die ein Schema generiert werden soll.Specifies an XDR file to generate a schema for.

Um eine Codedatei zu generieren, verwenden Sie das <generateClasses>-Element.To generate a code file, use the <generateClasses> element. Im folgenden Beispiel wird eine Codedatei generiert.The following example generates a code file. Beachten Sie die beiden zusätzlichen Attribute, mit denen Sie Programmiersprache und Namespace der generierten Datei festlegen können.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 -->

Sie können u.&#160;a. folgende Optionen für das <generateClasses>-Element festlegen:Options you can set for the <generateClasses> element include the following.

ElementElement BeschreibungDescription
<Element><element> Gibt ein Element in der XSD-Datei an, für das Code generiert werden soll.Specifies an element in the .xsd file to generate code for.
<schemaImporterExtensions><schemaImporterExtensions> Gibt einen von der SchemaImporterExtension-Klasse abgeleiteten Typ an.Specifies a type derived from the SchemaImporterExtension class.
<Schema><schema> Gibt eine XML-Schemadatei an, für die Code generiert werden soll.Specifies a XML Schema file to generate code for. Mehrere XML-Schemadateien können mit mehreren <schema>-Elementen angegeben werden.Multiple XML Schema files can be specified using multiple <schema> elements.

In der folgenden Tabelle sind die Attribute aufgeführt, die zusätzlich mit dem <generateClasses>-Element verwendet werden können.The following table shows the attributes that can also be used with the <generateClasses> element.

AttributAttribute BeschreibungDescription
languagelanguage Gibt die zu verwendende Programmiersprache an.Specifies the programming language to use. Wählen Sie unter CS (C#, dem Standard), VB (Visual Basic), JS (JScript) oder VJS (Visual J#) aus.Choose from CS (C#, the default), VB (Visual Basic), JS (JScript), or VJS (Visual J#). Sie können auch einen vollqualifizierten Namen für eine Klasse angeben, die CodeDomProvider implementiert.You can also specify a fully qualified name for a class that implements CodeDomProvider.
namespacenamespace Gibt den Namespace für den generierten Code an.Specifies the namespace for the generated code. Der Namespace muss CLR-Standards entsprechen (darf beispielsweise keine Leerzeichen oder umgekehrten Schrägstriche enthalten).The namespace must conform to CLR standards (for example, no spaces or backslash characters).
Optionenoptions Einer der folgenden Werte: none, properties (generiert Eigenschaften anstelle von öffentlichen Feldern), order oder enableDataBinding (siehe Schalter /order und /enableDataBinding im vorherigen Abschnitt zu Optionen für XSD-Dateien).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.

Sie können auch steuern, wie DataSet-Code generiert wird, indem Sie das <generateDataSet>-Element verwenden.You can also control how DataSet code is generated by using the <generateDataSet> element. Das folgende XML gibt an, dass der generierte Code verwendet DataSet Strukturen (z. B. die DataTable Klasse), Visual Basic-Code für ein angegebenes Element zu erstellen.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. Die generierten DataSet-Strukturen unterstützen LINQ-Abfragen.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>

Sie können u.&#160;a. folgende Optionen für das <generateDataSet>-Element festlegen:Options you can set for the <generateDataSet> element include the following.

ElementElement BeschreibungDescription
<Schema><schema> Gibt eine XML-Schemadatei an, für die Code generiert werden soll.Specifies an XML Schema file to generate code for. Mehrere XML-Schemadateien können mit mehreren <schema>-Elementen angegeben werden.Multiple XML Schema files can be specified using multiple <schema> elements.

In der folgenden Tabelle sind die Attribute aufgeführt, die mit dem <generateDataSet>-Element verwendet werden können.The following table shows the attributes that can be used with the <generateDataSet> element.

AttributAttribute BeschreibungDescription
enableLinqDataSetenableLinqDataSet Gibt an, dass das generierte DataSet mit LINQ to DataSet abgefragt werden kann.Specifies that the generated DataSet can be queried against using LINQ to DataSet. Der Standardwert ist false.The default value is false.
languagelanguage Gibt die zu verwendende Programmiersprache an.Specifies the programming language to use. Wählen Sie unter CS (C#, dem Standard), VB (Visual Basic), JS (JScript) oder VJS (Visual J#) aus.Choose from CS (C#, the default), VB (Visual Basic), JS (JScript), or VJS (Visual J#). Sie können auch einen vollqualifizierten Namen für eine Klasse angeben, die CodeDomProvider implementiert.You can also specify a fully qualified name for a class that implements CodeDomProvider.
namespacenamespace Gibt den Namespace für den generierten Code an.Specifies the namespace for the generated code. Der Namespace muss CLR-Standards entsprechen (darf beispielsweise keine Leerzeichen oder umgekehrten Schrägstriche enthalten).The namespace must conform to CLR standards (for example, no spaces or backslash characters).

Einige Attribute können für das <xsd>-Element auf oberster Ebene festgelegt werden.There are attributes that you can set on the top level <xsd> element. Diese Optionen können mit einem beliebigen untergeordneten Element verwendet werden (<generateSchemas>,<generateClasses> oder <generateDataSet>).These options can be used with any of the child elements (<generateSchemas>, <generateClasses> or <generateDataSet>). Im folgenden XML-Code wird Code für ein Element mit dem Namen "IDItems" im Ausgabeverzeichnis mit dem Namen "MyOutputDirectory" generiert.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>

In der folgenden Tabelle sind die Attribute aufgeführt, die zusätzlich mit dem <xsd>-Element verwendet werden können.The following table shows the attributes that can also be used with the <xsd> element.

AttributAttribute BeschreibungDescription
Ausgabeoutput Der Name eines Verzeichnisses, in dem das generierte Schema oder die generierte Codedatei gespeichert wird.The name of a directory where the generated schema or code file will be placed.
nologonologo Unterdrückt das Banner.Suppresses the banner. Wird auf true oder false festgelegt.Set to true or false.
helphelp Zeigt Befehlssyntax und Optionen für das Tool an.Displays command syntax and options for the tool. Wird auf true oder false festgelegt.Set to true or false.

BeispieleExamples

Der folgende Befehl generiert ein XML-Schema aus myFile.xdr und speichert dieses im aktuellen Verzeichnis.The following command generates an XML schema from myFile.xdr and saves it to the current directory.

xsd myFile.xdr

Der folgende Befehl generiert ein XML-Schema aus myFile.xml und speichert dieses im angegebenen Verzeichnis.The following command generates an XML schema from myFile.xml and saves it to the specified directory.

xsd myFile.xml /outputdir:myOutputDir

Durch den folgenden Befehl wird ein Dataset generiert, das dem angegebenen Schema in der Programmiersprache C# entspricht, und im aktuellen Verzeichnis unter XSDSchemaFile.cs gespeichert.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

Der folgende Befehl generiert XML-Schemas für alle Typen in der Assembly myAssembly.dll und speichert diese unter schema0.xsd im aktuellen Verzeichnis.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

Siehe auchSee also