XML 架构定义(Xsd.exe)工具从 XDR、XML 和 XSD 文件或运行时程序集中的类生成 XML 架构或公共语言运行时类。
XML 架构定义工具 (Xsd.exe) 通常可在以下路径中找到:
C:\Program Files (x86)\Microsoft SDKs\Windows\{version}\bin\NETFX {version} Tools\
语法
从命令行运行该工具。
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]
小窍门
若要使 .NET Framework 工具正常运行,必须正确设置Path
Include
和Lib
环境变量。 通过运行位于 SDK<\version>\<Bin 目录中的 SDKVars.bat>来设置这些环境变量。 必须在每个命令行界面中执行 SDKVars.bat。
论点
论点 | DESCRIPTION |
---|---|
file.extension | 指定要转换的输入文件。 必须将扩展名指定为下列之一:.xdr、.xml、.xsd、.dll或 .exe。 如果指定 XDR 架构文件 (.xdr 扩展名),Xsd.exe 将 XDR 架构转换为 XSD 架构。 输出文件的名称与 XDR 架构相同,但扩展名为 .xsd。 如果指定 XML 文件(.xml 扩展名),Xsd.exe 从文件中的数据推断架构并生成 XSD 架构。 输出文件的名称与 XML 文件相同,但扩展名为 .xsd。 如果指定 XML 架构文件(.xsd 扩展名),Xsd.exe 为对应于 XML 架构的运行时对象生成源代码。 如果指定运行时程序集文件(.exe 或 .dll 扩展名),Xsd.exe 为该程序集中的一个或多个类型生成架构。 可以使用该 /type 选项指定要为其生成架构的类型。 输出架构命名为 schema0.xsd、schema1.xsd 等。 仅当给定类型使用 XMLRoot 自定义属性指定命名空间时,Xsd.exe 才会生成多个架构。 |
常规选项
选项 | DESCRIPTION |
---|---|
/h[elp] | 显示该工具的命令语法和选项。 |
/o[utputdir]:目录 | 指定输出文件的目录。 此参数只能显示一次。 默认为当前目录。 |
/? | 显示该工具的命令语法和选项。 |
/p[arameters]:file.xml | 从指定的 .xml 文件中读取各种操作模式的选项。 短形式为 /p: . 有关详细信息,请参阅备注部分。 |
XSD 文件选项
必须为 .xsd 文件指定以下选项之一。
选项 | DESCRIPTION |
---|---|
/c[lasses] | 生成与指定架构对应的类。 若要将 XML 数据读入对象,请使用 XmlSerializer.Deserialize 该方法。 |
/d[ataset] | 生成派生自 DataSet 与指定架构对应的类。 若要将 XML 数据读入派生类,请使用 DataSet.ReadXml 该方法。 |
还可以为 .xsd 文件指定以下任一选项。
选项 | DESCRIPTION |
---|---|
/e[lement]:element | 指定要为其生成代码的架构中的元素。 默认情况下,键入所有元素。 可以多次指定此参数。 |
/enableDataBinding | 在所有生成类型上实现INotifyPropertyChanged接口,以启用数据绑定。 短形式为 /edb . |
/enableLinqDataSet | (缩写形式:/eld 。)指定可使用 LINQ to DataSet 查询的生成的数据集。 同时指定 /dataset 选项时,将使用此选项。 有关详细信息,请参阅 LINQ to DataSet 概述 和 查询类型化数据集。 有关使用 LINQ 的一般信息,请参阅 Language-Integrated 查询 (LINQ) - C# 或 Language-Integrated 查询 (LINQ) - Visual Basic。 |
/f[ields] | 仅生成字段。 默认情况下,会生成 具有后盾字段的属性 。 |
/l[anguage]:语言 | 指定要使用的编程语言。 选择 CS (C#,默认值)、 VB (Visual Basic)、 JS (JScript)或 VJS (Visual J#)。 还可以为实现类指定完全限定的名称 System.CodeDom.Compiler.CodeDomProvider |
/n[amespace]:namespace | 指定生成的类型的运行时命名空间。 默认命名空间为 Schemas 。 |
/nologo | 取消显示版权标志。 |
/次序 | 为所有粒子成员生成显式顺序标识符。 |
/o[ut]:directoryName | 指定要在其中放置文件的输出目录。 默认为当前目录。 |
/u[ri]:uri | 指定要为其生成代码的架构中的元素的 URI。 此 URI(如果存在)适用于使用 /element 该选项指定的所有元素。 |
DLL 和 EXE 文件选项
选项 | DESCRIPTION |
---|---|
/t[ype]:typename | 指定要为其创建架构的类型的名称。 可以指定多个类型参数。 如果 typename 未指定命名空间,Xsd.exe 将程序集中的所有类型与指定类型匹配。 如果 typename 指定命名空间,则仅匹配该类型。 如果 typename 以星号字符 \\结尾,该工具将匹配以 *前面的字符串开头的所有类型。 如果省略 /type 选项,则 Xsd.exe 为程序集中的所有类型生成架构。 |
注解
下表显示了 Xsd.exe 执行的操作。
操作 | DESCRIPTION |
---|---|
XDR 到 XSD | 从 XML-Data-Reduced 架构文件生成 XML 架构。 XDR 是基于 XML 的早期架构格式。 |
XML 到 XSD | 从 XML 文件生成 XML 架构。 |
XSD 到 DataSet | 从 XSD 架构文件生成公共语言运行时 DataSet 类。 生成的类为常规 XML 数据提供丰富的对象模型。 |
XSD 到类 | 从 XSD 架构文件生成运行时类。 生成的类可以与 System.Xml.Serialization.XmlSerializer 一起使用,以读取和写入符合该模式的 XML 代码。 |
类到 XSD | 从运行时程序集文件中的类型或类型生成 XML 架构。 生成的架构定义了 XmlSerializer 使用的 XML 格式。 |
Xsd.exe 只允许操作遵循由万维网联合会 (W3C) 提议的 XML 架构定义 (XSD) 语言的 XML 架构。 有关 XML 架构定义建议或 XML 标准的详细信息,请参阅 https://w3.org。
使用 XML 文件设置选项
通过使用 /parameters
开关,可以指定一个设置各种选项的 XML 文件。 可以设置的选项取决于如何使用 XSD.exe 工具。 选择包括生成架构、生成代码文件或生成包含 DataSet
功能的代码文件。 例如,可以在生成架构时将元素设置为 <assembly>
可执行文件(.exe)或类型库(.dll)文件的名称,但在生成代码文件时不能。 以下 XML 演示如何将 <generateSchemas>
元素与指定的可执行文件一起使用:
<!-- This is in a file named GenerateSchemas.xml. -->
<xsd xmlns='http://microsoft.com/dotnet/tools/xsd/'>
<generateSchemas>
<assembly>ConsoleApplication1.exe</assembly>
</generateSchemas>
</xsd>
如果上述 XML 包含在名为 GenerateSchemas.xml的文件中,请在命令提示符处键入以下命令并按 /parameters
,以使用该开关:
xsd /p:GenerateSchemas.xml
另一方面,如果要为程序集中找到的单个类型生成架构,则可以使用以下 XML:
<!-- This is in a file named GenerateSchemaFromType.xml. -->
<xsd xmlns='http://microsoft.com/dotnet/tools/xsd/'>
<generateSchemas>
<type>IDItems</type>
</generateSchemas>
</xsd>
但是,若要使用前面的代码,还必须在命令提示符处提供程序集的名称。 在命令提示符处输入以下内容(假设 XML 文件命名为 GenerateSchemaFromType.xml):
xsd /p:GenerateSchemaFromType.xml ConsoleApplication1.exe
必须仅为<generateSchemas>
元素指定以下选项之一。
元素 | DESCRIPTION |
---|---|
<装配> | 指定要从中生成架构的程序集。 |
<类型> | 指定程序集中找到的要为其生成架构的类型。 |
<xml> | 指定要为其生成架构的 XML 文件。 |
<xdr> | 指定要为其生成架构的 XDR 文件。 |
若要生成代码文件,请使用 <generateClasses>
元素。 以下示例生成代码文件。 请注意,还显示了两个属性,可用于设置生成的文件的编程语言和命名空间。
<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 -->
您可以为 <generateClasses>
元素设置的选项包括以下内容。
元素 | DESCRIPTION |
---|---|
<元素> | 指定要为其生成代码的 .xsd 文件中的元素。 |
<schemaImporterExtensions> | 指定从 SchemaImporterExtension 类派生的类型。 |
<图式> | 指定要为其生成代码的 XML 架构文件。 可以通过多个 <schema> 元素指定多个 XML 架构文件。 |
下表显示也可用于 <generateClasses>
元素的特性。
特征 | DESCRIPTION |
---|---|
语言 | 指定要使用的编程语言。 从 CS (C#、默认值)、 VB (Visual Basic)、 JS (JScript)或 VJS (Visual J#)中进行选择。 还可以为实现 CodeDomProvider的类指定完全限定的名称。 |
命名空间 | 指定生成的代码的命名空间。 命名空间必须符合 CLR 标准(例如,没有空格或反斜杠字符)。 |
选项 | 以下值之一:none ,properties 或 order (生成属性而不是公共字段的是 enableDataBinding ,请参阅之前提到的 XSD 文件选项部分中的 /order 和 /enableDataBinding 开关)。 |
还可以通过使用DataSet
元素来控制<generateDataSet>
代码的生成方式。 以下 XML 指定生成的代码使用 DataSet
结构(如 DataTable 类)为指定的元素创建 Visual Basic 代码。 生成的数据集结构将支持 LINQ 查询。
<xsd xmlns='http://microsoft.com/dotnet/tools/xsd/'>
<generateDataSet language='VB' namespace='Microsoft.Serialization.Examples' enableLinqDataSet='true'>
</generateDataSet>
</xsd>
您可以为 <generateDataSet>
元素设置的选项包括以下内容。
元素 | DESCRIPTION |
---|---|
<图式> | 指定要为其生成代码的 XML 架构文件。 可以通过多个 <schema> 元素指定多个 XML 架构文件。 |
下表显示了可与元素一起使用 <generateDataSet>
的属性。
特征 | DESCRIPTION |
---|---|
enableLinqDataSet | 指定可使用 LINQ to DataSet 查询的生成的数据集。 默认值为 false。 |
语言 | 指定要使用的编程语言。 从 CS (C#、默认值)、 VB (Visual Basic)、 JS (JScript)或 VJS (Visual J#)中进行选择。 还可以为实现 CodeDomProvider的类指定完全限定的名称。 |
命名空间 | 指定生成的代码的命名空间。 命名空间必须符合 CLR 标准(例如,没有空格或反斜杠字符)。 |
可以在顶级 <xsd>
元素上设置属性。 这些选项可与任何子元素(<generateSchemas>
<generateClasses>
或<generateDataSet>
) 一起使用。 以下 XML 代码为名为“MyOutputDirectory”的输出目录中名为“IDItems”的元素生成代码。
<xsd xmlns='http://microsoft.com/dotnet/tools/xsd/' output='MyOutputDirectory'>
<generateClasses>
<element>IDItems</element>
</generateClasses>
</xsd>
下表显示也可用于 <xsd>
元素的特性。
特征 | DESCRIPTION |
---|---|
输出 | 将放置生成的架构或代码文件的目录的名称。 |
nologo | 取消显示版权标志。 设置为 true 或 false 。 |
帮助 | 显示该工具的命令语法和选项。 设置为 true 或 false 。 |
例子
以下命令生成 XML 架构 myFile.xdr
并将其保存到当前目录。
xsd myFile.xdr
以下命令从中生成 XML 架构 myFile.xml
并将其保存到指定目录。
xsd myFile.xml /outputdir:myOutputDir
以下命令生成一个数据集,该数据集对应于 C# 语言中的指定架构,并将其 XSDSchemaFile.cs
另存为当前目录中。
xsd /dataset /language:CS XSDSchemaFile.xsd
以下命令为程序集 myAssembly.dll
中的所有类型生成 XML 架构,并将其保存为 schema0.xsd
当前目录中。
xsd myAssembly.dll