Share via


XML 結構描述定義工具 (Xsd.exe)

XML 結構描述定義工具 (Xsd.exe) 可以從 XDR、XML 和 XSD 檔案或從執行階段組件的類別中,產生 XML 結構描述或 Common Language 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]

引數

引數 描述

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 結構描述之 Runtime 物件的原始程式碼。

如果指定執行階段組件檔 (.exe 或 .dll 副檔名),Xsd.exe 會產生該組件中一個或多個型別的結構描述。您可以使用 /type 選項來指定要產生結構描述的型別。輸出結構描述被命名為 schema0.xsd、schema1.xsd 等等。只有在指定的型別使用 XMLRoot 自訂屬性來指定命名空間 (Namespace) 時,Xsd.exe 才能產生多個結構描述。

一般選項

選項 描述

/h[elp]

顯示工具的命令語法和選項。

/o[utputdir]:directory

指定輸出檔的目錄。這個引數只可以使用一次。預設是目前的目錄。

/?

顯示工具的命令語法和選項。

/P[arameters]: file.xml

從指定的 .xml 檔案,讀取各種作業模式的選項。簡短形式為 '/p:'。如需詳細資訊,請參閱接下來的<備註>一節。

XSD 檔案選項

您只能為 .xsd 檔指定下列其中一個選項:

選項 描述

/c[lasses]

產生對應到指定的結構描述的類別。若要將 XML 資料讀入物件,請使用 System.Xml.Serialization.XmlSerializer.Deserializer 方法。

/d[ataset]

產生衍生自 DataSet 的類別,其對應到指定的結構描述。若要將 XML 資料讀入衍生類別 (Derived Class),請使用 System.Data.DataSet.ReadXml 方法。

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

選項 描述

/e[lement]:element

指定所要產生程式碼的結構描述中的項目。依預設值,所有項目都會被輸入。您可以多次指定這個引數。

/enableDataBinding

在所有產生的型別上實作 INotifyPropertyChanged 介面,以啟用資料繫結 (Data Binding)。簡短形式為 '/edb'。

/f[ields]

產生欄位,而不是產生屬性。根據預設,會產生屬性。

/l[anguage]:language

指定要使用的程式語言。可以選擇 CS (C#,此為預設值)、VB (Visual Basic)、JS (JScript) 和 VJS (Visual J#)。您也可以指定類別實作 System.CodeDom.Compiler.CodeDomProvider 的完整名稱。

/n[amespace]:namespace

指定產生的型別的執行階段命名空間。預設命名空間是 Schemas

/nologo

隱藏產品啟始畫面。

/order

在所有物件成員上產生明確順序識別項。

/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 結構描述。產生的結構描述會定義 System.Xml.Serialization.XmlSerializer 所使用的 XML 格式。

Xsd.exe 只允許您操作遵循 XML 結構描述定義 (XSD) 語言的 XML 結構描述,而這個 XSD 語言是由全球資訊網協會 (W3C) 所提出的。如需 XML 結構描述定義提議或 XML 標準的詳細資訊,請參閱 http://w3c.org。

設定 XML 檔案的選項

使用 /parameters 參數時,您可以指定會設定各種選項的單一 XML 檔案。您可以設定的選項會視使用 XSD.exe 工具的方式而定。這些選擇包括產生結構描述、產生程式碼檔或產生內含 DataSet 功能的程式碼檔。例如,可以在產生結構描述時 (但不是在產生程式碼檔時),將 <assembly> 項目設為可執行檔 (.exe) 或型別程式庫檔案 (Type Library File) (.dll) 的名稱。下列 XML 會顯示如何使用 <generateSchemas> 項目搭配指定的可執行檔:

<!-- This is in a file named GenerateSchemas.xml. -->
<xsd xmlns='https://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='https://microsoft.com/dotnet/tools/xsd/'>
<generateSchemas>
   <type>IDItems</type>
</generateSchemas>
</xsd>

但是若要使用之前的程式碼,您也必須在命令提示字元中提供組件的名稱。在命令提示字元中輸入下列命令 (假設 XML 檔案的名稱為 GenerateSchemaFromType.xml):

xsd /p:GenerateSchemaFromType.xml ConsoleApplication1.exe

您只能為 <generateSchemas> 項目指定下列其中一個選項:

項目 描述

<assembly>

指定要產生結構描述的組件。

<type>

指定在組件中找到的型別,以用於產生結構描述。

<xml>

指定用於產生結構描述的 XML 檔案。

<xdr>

指定用於產生結構描述的 XDR 檔案。

若要產生程式碼檔,請使用 <generateClasses> 項目。下列範例會產生程式碼檔。請注意,也會顯示兩個屬性,可讓您設定所產生檔案的程式設計語言和命名空間。

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

您可以對 <generateClasses> 項目設定的選項包括下列各項。

項目 描述

<element>

指定要產生程式碼之 .xsd 檔案中的項目。

<schemaImporterExtensions>

指定衍生自 SchemaImporterExtension 類別的型別。

下表顯示的屬性也可以和 <generateClasses> 項目搭配使用。

屬性 描述

language

指定要使用的程式語言。可以選擇 CS (C#,此為預設值)、VB (Visual Basic)、JS (JScript) 或 VJS (Visual J#)。您可以對實作 CodeDomProvider 的類別指定完整名稱。

命名空間

指定產生之程式碼的命名空間。命名空間必須符合 CLR 標準 (例如,沒有空白或反斜線字元)。

選項

下列其中一個值:noneproperties (產生屬性而非公用欄位)、orderenableDataBinding (請參閱先前<XSD 檔案選項>一節中的 /order/enableDataBinding 參數)。

您也可以使用 <generateDataSets> 項目,控制產生 DataSet 程式碼的方法。下列 XML 會指定產生的程式碼 使用 DataSet 結構 (例如 DataTable 類別),以建立所指定項目的 Visual Basic 程式碼。

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

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

<element>IDItems</element>

</generateDataSet>

</xsd>

您可以對 <generateDataSet> 項目設定的選項包括下列各項。

項目 描述

<element>

指定要產生程式碼之 .xsd 檔案中的項目。

下表顯示的屬性可以和 <generateDataSet> 項目搭配使用。

屬性 描述

language

指定要使用的程式語言。可以選擇 CS (C#,此為預設值)、VB (Visual Basic)、JS (JScript) 或 VJS (Visual J#)。您可以對實作 CodeDomProvider 的類別指定完整名稱。

命名空間

指定產生之程式碼的命名空間。命名空間必須符合 CLR 標準 (例如,沒有空白或反斜線字元)。

在最上層 <xsd> 項目中有一些您可以設定的屬性。這些選項可以和任何子項目搭配使用 (<generateSchemas><generateClasses><generateDataSet>)。下列 XML 程式碼會對名為 "IDItems" 的項目,在名為 "MyOutputDirectory" 的輸出目錄中產生程式碼。

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

下表顯示的屬性也可以和 <xsd> 項目搭配使用。

屬性 描述

output

將放置產生的結構描述或程式碼檔的目錄名稱。

nologo

隱藏產品啟始畫面。設為 truefalse

help

顯示工具的命令語法和選項。設為 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  

請參閱

參考

.NET Framework 工具
DataSet Class
System.Xml.Serialization.XmlSerializer.Deserializer
System.Xml.Serialization.XmlSerializer
SDK 命令提示字元