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 Overview和Querying Typed DataSets。如需使用 LINQ 的一般資訊,請參閱Language-Integrated Query (LINQ)。 |
/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://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 結構描述檔案。您可以使用多個 <schema> 項目來指定多個 XML 結構描述檔案。 |
下表顯示也可以和 <generateClasses> 項目搭配使用的屬性。
屬性 | 描述 |
---|---|
language |
指定要使用的程式語言。可以選擇 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 結構描述檔案。您可以使用多個 <schema> 項目來指定多個 XML 結構描述檔案。 |
下表顯示可以和 <generateDataSet> 項目搭配使用的屬性。
屬性 | 描述 |
---|---|
enableLinqDataSet |
指定產生的 DataSet 可使用 LINQ to DataSet 查詢。預設值為 false。 |
language |
指定要使用的程式語言。可以選擇 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> 項目搭配使用的屬性。
屬性 | 描述 |
---|---|
output |
將放置產生的結構描述或程式碼檔的目錄名稱。 |
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
另請參閱
參考
System.Xml.Serialization.XmlSerializer.Deserializer
DataSet
System.Xml.Serialization.XmlSerializer
其他資源
.NET Framework Tools
SDK Command Prompt
LINQ to DataSet Overview
Querying Typed DataSets
Language-Integrated Query (LINQ)
建置日期:2010-03-10