共用方式為


XML 架構定義工具 (Xsd.exe)

XML 架構定義(Xsd.exe)工具可以從 XDR、XML 和 XSD 檔案或從執行階段組件中的類別生成 XML 架構或 Common Language Runtime 類別。

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 工具正常運作,您必須正確設定 、 PathIncludeLib 環境變數。 執行 SDKVars.bat,其位於 <SDK>\<version>\Bin 目錄中,以設定這些環境變數。 SDKVars.bat 必須在每個命令提示字元中執行。

論點

論點 說明
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 才會產生多個架構。

一般選項

選項 說明
/h[elp] 顯示工具的命令語法和選項。
/o[utputdir]:directory 指定輸出檔案的目錄。 這個參數只能出現一次。 預設值是目前的目錄。
/? 顯示工具的命令語法和選項。
/p[arameters]:file.xml 從指定的 .xml 檔案讀取各種作業模式的選項。 簡短格式為 /p:。 如需詳細資訊,請參閱備註一節。

XSD 檔案選項

您必須為 .xsd 檔案指定下列其中一個選項。

選項 說明
/c[lasses] 產生對應至指定架構的類別。 若要將 XML 資料讀入 物件,請使用 XmlSerializer.Deserialize 方法。
/d[ataset] 產生衍生自 DataSet 的類別,其對應於指定的架構。 若要將 XML 資料讀入衍生類別,請使用 DataSet.ReadXml 方法。

您也可以為 .xsd 檔案指定下列任何選項。

選項 說明
/e[lement]:element 指定架構中要生成程式碼的元素。 根據預設,所有元素都會輸入。 您可以多次指定這個自變數。
/enableDataBinding 在所有生成的型別上實作INotifyPropertyChanged介面,以啟用資料繫結。 簡短格式為 /edb
/enableLinqDataSet (簡短形式: /eld.)指定可以使用LINQ to DataSet 查詢產生的DataSet。 當同時指定 /dataset 選項時,會使用此選項。 如需詳細資訊,請參閱 LINQ to DataSet 概觀查詢具類型的數據集。 如需使用 LINQ 的一般資訊,請參閱 Language-Integrated Query (LINQ) - C#Language-Integrated Query (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 檔案選項

選項 說明
/t[ype]:typename 指定要為其建立架構的類型名稱。 您可以指定多個類型自變數。 如果 typename 未指定命名空間,Xsd.exe 會比對元件中具有指定型別的所有類型。 如果 typename 指定命名空間,則只會比對該類型。 如果 typename 結尾為星號字元 },此工具會比對以 *前面的字串開頭的所有類型。 如果您省略 /type 選項,Xsd.exe 會為組件中的所有類型生成架構。

備註

下表顯示 Xsd.exe 執行的作業。

行動 說明
XDR 至 XSD 從 XML-Data-Reduced 架構檔案產生 XML 架構。 XDR 是以 XML 為基礎的早期架構格式。
XML 至 XSD 從 XML 檔案產生 XML 架構。
XSD 至 DataSet 從 XSD 架構檔案產生 Common Language Runtime DataSet 類別。 產生的類別會為一般 XML 資料提供豐富的物件模型。
XSD 轉換為類別 從 XSD 架構檔案產生運行時間類別。 產生的類別可以與 搭配 System.Xml.Serialization.XmlSerializer 使用,以讀取和寫入遵循架構的 XML 程式代碼。
將類別轉換為 XSD 從運行時間元件檔中的類型或型別產生 XML 架構。 產生的架構會定義 所使用的 XmlSerializerXML 格式。

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的檔案中,請在命令提示字元中輸入下列命令,然後按 Enter 鍵,以使用 /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> 元素指定下列其中一個選項。

元素 說明
<集會> 指定要從中產生架構的元件。
<類型> 指定在組件中找到的用於產生架構的型別。
<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> 元素設定的選項包括以下選項。

元素 說明
<元素> 指定 .xsd 檔案中的元素以產生程式碼。
<schemaImporterExtensions> 指定從「類別」SchemaImporterExtension 衍生的類型。
<圖式> 指定要為其產生程式代碼的 XML 架構檔案。 您可以使用多個架構元素來指定多個 <XML 架構> 檔案。

下表顯示可以與 <generateClasses> 元素搭配使用的屬性。

屬性 說明
語言 指定要使用的程式設計語言。 選擇 CS [C#]、[預設值]、 VB [Visual Basic]、 JS [JScript] 或 VJS [Visual J#]。 您也可以為實作CodeDomProvider的類別指定完整限定名稱。
命名空間 指定所產生程式代碼的命名空間。 命名空間必須符合 CLR 標準(例如,沒有空格或反斜杠字元)。
選項 下列其中一個值:noneproperties(產生屬性而非公用欄位)、orderenableDataBinding(請參閱上述 XSD 檔案選項一節中的 /order/enableDataBinding 切換選項)。

您還可以使用<generateDataSet>元素來控制DataSet代碼的生成方式。 下列 XML 指定產生的程式代碼會使用 DataSet 結構(例如 DataTable 類別)為指定的專案建立 Visual Basic 程式代碼。 產生的 DataSet 結構將支援 LINQ 查詢。

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

您可以為 <generateDataSet> 元素設定的選項包括下列專案。

元素 說明
<圖式> 指定要為其產生程式代碼的 XML 架構檔案。 您可以使用多個架構元素來指定多個 <XML 架構> 檔案。

下表顯示可用於 <generateDataSet> 元素的屬性。

屬性 說明
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> 元素搭配使用的屬性。

屬性 說明
輸出 將放置所產生架構或程式碼檔案之目錄的名稱。
nologo 隱藏橫幅。 設為 truefalse
幫助 顯示工具的命令語法和選項。 設為 truefalse

範例

下列命令會從 myFile.xdr 產生 XML 架構,並將它儲存至目前目錄。

xsd myFile.xdr

下列命令會從 myFile.xml 產生 XML 架構,並將它儲存至指定的目錄。

xsd myFile.xml /outputdir:myOutputDir

下列命令會產生對應至 C# 語言中指定架構的數據集,並將它儲存為 XSDSchemaFile.cs 目前目錄中。

xsd /dataset /language:CS XSDSchemaFile.xsd

下列命令會產生元件 myAssembly.dll 中所有類型的 XML 架構,並將其儲存為 schema0.xsd 目前目錄中。

xsd myAssembly.dll

另請參閱