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] [/enableLinqDataSet] [/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'。 |
/enableLinqDataSet |
(簡短形式:/eld)。指定產生的 DataSet 可使用 LINQ to DataSet 查詢。 如果也指定了 /dataset 選項,就會使用這個選項。 如需詳細資訊,請參閱LINQ to DataSet 概觀與查詢具型別 DataSet。 如需使用 LINQ 的一般資訊,請參閱LINQ (Language-Integrated Query)。 |
/f[ields] |
產生欄位,而不是產生屬性。 根據預設,會產生屬性。 |
/l[anguage]:language |
指定要使用的程式語言。 可以選擇 CS (C#,此為預設值)、VB (Visual Basic)、JS (JScript) 或 VJS (Visual J#)。 您也可以對實作 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 結構描述檔中產生執行階段類別。 產生的類別可以配合 XmlSerializer 使用,以讀取和寫入遵循結構描述的 XML 程式碼。類別轉換成 XSD
從型別或執行階段組件檔中的型別中產生 XML 結構描述。 產生的結構描述會定義 System.Xml.Serialization.XmlSerializer 所使用的 XML 格式。
Xsd.exe 只允許您操作遵循 XML 結構描述定義 (XSD) 語言的 XML 結構描述,而這個 XSD 語言是由全球資訊網協會 (W3C) 所提出的。 如需 XML 結構描述定義提議或 XML 標準的詳細資訊,請參閱 http://w3.org。
設定 XML 檔案的選項
使用 /parameters 參數時,您可以指定會設定各種選項的單一 XML 檔案。 您可以設定的選項會視使用 XSD.exe 工具的方式而定。 這些選擇包括產生結構描述、產生程式碼檔或產生內含 DataSet 功能的程式碼檔。 例如,您可以在產生結構描述時 (但不是在產生程式碼檔案時),將 <assembly> 項目設為可執行檔 (.exe) 或型別程式庫 (.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 類別的型別。 |
<schema> |
指定用於產生程式碼的 XML 結構描述檔案。 多個 XML 結構描述檔案可以使用多個 <schema> 元素指定。 |
下表顯示也可以和 <generateClasses> 項目搭配使用的屬性。
屬性 |
描述 |
---|---|
語言 |
指定要使用的程式語言。 可以選擇 CS (C#,此為預設值)、VB (Visual Basic)、JS (JScript) 或 VJS (Visual J#)。 您可以對實作 CodeDomProvider 的類別指定完整名稱。 |
namespace |
指定產生之程式碼的命名空間。 命名空間必須符合 CLR 標準 (例如,沒有空白或反斜線字元)。 |
選項 |
下列其中一個值:none、properties (產生屬性而非公用欄位)、order 或 enableDataBinding (請參閱先前<XSD 檔案選項>一節中的 /order 和 /enableDataBinding 參數)。 |
您也可以使用 <generateDataSets> 項目,控制產生 DataSet 程式碼的方法。 下列 XML 會指定產生的程式碼使用 DataSet 結構 (例如 DataTable 類別),以建立所指定項目的 Visual Basic 程式碼。 所產生的 DataSet 結構將會支援 LINQ 查詢。
<xsd xmlns='https://microsoft.com/dotnet/tools/xsd/'>
<generateDataSet language='VB' namespace='Microsoft.Serialization.Examples' enableLinqDataSet='true'>
</generateDataSet>
</xsd>
您可以對 <generateDataSet> 項目設定的選項包括下列各項。
項目 |
描述 |
---|---|
<schema> |
指定用於產生程式碼的 XML 結構描述檔案。 多個 XML 結構描述檔案可以使用多個 <schema> 元素指定。 |
下表顯示可以和 <generateDataSet> 項目搭配使用的屬性。
屬性 |
描述 |
---|---|
enableLinqDataSet |
指定產生的 DataSet 可使用 LINQ to DataSet 查詢。 預設值為 false。 |
語言 |
指定要使用的程式語言。 可以選擇 CS (C#,此為預設值)、VB (Visual Basic)、JS (JScript) 或 VJS (Visual J#)。 您可以對實作 CodeDomProvider 的類別指定完整名稱。 |
namespace |
指定產生之程式碼的命名空間。 命名空間必須符合 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> 項目搭配使用的屬性。
屬性 |
描述 |
---|---|
輸出 |
將放置產生的結構描述或程式碼檔的目錄名稱。 |
nologo |
隱藏產品啟始畫面。 設為 true 或 false。 |
help |
顯示工具的命令語法和選項。 設為 true 或 false。 |
範例
下列命令會從 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
請參閱
參考
DataSet
System.Xml.Serialization.XmlSerializer.Deserializer
XmlSerializer