共用方式為


將 DataSet 寫為 XML 資料

在 ADO.NET 中,您可以寫入 XML 形式的 DataSet,具有或不具有其結構描述皆可。如果結構描述資訊是以 XML 內嵌的,則它是以 XML 結構描述定義語言 (XSD) 寫入。結構描述包含 DataSet 的資料表定義,以及關聯性和條件約束定義。

DataSet 寫為 XML 資料時,DataSet 中的資料列會以其目前版本寫入。不過,DataSet 也可寫入為 DiffGram,這樣會包含資料列的目前和原始值。

可將 XML 形式的 DataSet 寫入檔案、資料流、XmlWriter 或字串中。這些選擇在如何傳輸 XML 形式的 DataSet 上,為您提供相當大的彈性。若要以字串方式取得 XML 形式的 DataSet,請使用下列範例中所示的 GetXml 方法。

Dim xmlDS As String = custDS.GetXml()
string xmlDS = custDS.GetXml();

GetXml 會傳回 XML 形式的 DataSet,其中不包含結構描述資訊。若要將 DataSet 的結構描述資訊 (做為 XML 結構描述) 寫入字串中,請使用 GetXmlSchema

若要將 DataSet 寫入檔案、資料流或 XmlWriter 中,請使用 WriteXml 方法。您傳遞給 WriteXml 的第一個參數是 XML 輸出的目的端。例如,傳遞包含檔案名稱、System.IO.TextWriter 物件等的字串。您可以傳遞第二個選擇性的 XmlWriteMode 參數,以指定 XML 輸出的寫入方式。

下列表格顯示 XmlWriteMode 的選項。

XmlWriteMode 選項 說明

IgnoreSchema

DataSet 的目前內容寫入為 XML 資料,其中不包含 XML 結構描述。此為預設值。

WriteSchema

DataSet 的目前內容寫入為 XML 資料,其將關聯式結構做為內嵌 XML 結構描述。

DiffGram

將整個 DataSet 寫入為 DiffGram (包括原始值和目前值)。如需詳細資訊,請參閱DiffGram

寫入含有 DataRelation 物件之 XML 形式的 DataSet 時,通常希望產生的 XML 會將每個關聯的子資料列巢狀化至其相關父項目內。為達此目的,請在將 DataRelation 加入 DataSet 時,將 DataRelationNested 屬性設為 true。如需詳細資訊,請參閱巢狀 DataRelation

下列兩個範例說明如何將 XML 形式的 DataSet 寫入檔案中。第一個範例將結果 XML 的檔案名稱以字串傳遞給 WriteXml。第二個範例傳遞 System.IO.StreamWriter 物件。

custDS.WriteXml("Customers.xml", XmlWriteMode.WriteSchema)
custDS.WriteXml("Customers.xml", XmlWriteMode.WriteSchema);
Dim xmlSW As System.IO.StreamWriter = New System.IO.StreamWriter("Customers.xml")
custDS.WriteXml(xmlSW, XmlWriteMode.WriteSchema)
xmlSW.Close()
System.IO.StreamWriter xmlSW = new System.IO.StreamWriter("Customers.xml");
custDS.WriteXml(xmlSW, XmlWriteMode.WriteSchema);
xmlSW.Close();

對應資料行至 XML 項目、屬性和文字

您可以使用 DataColumn 物件的 ColumnMapping 屬性,指定資料表的資料行如何以 XML 表示。下列表格說明資料表資料行的 ColumnMapping 屬性所具有的不同 MappingType 值,以及結果 XML。

MappingType 值 說明

項目

此為預設值。資料行寫為 XML 項目,其中 ColumnName 為項目名稱,且資料行內容會寫為項目文字。例如:

<ColumnName>Column Contents</ColumnName>

屬性

資料行寫為目前資料行 XML 項目的 XML 屬性,其中 ColumnName 是屬性名稱,且資料行內容會寫為屬性值。例如:

<RowElement ColumnName="Column Contents" />

SimpleContent

資料行內容寫為目前資料行 XML 項目中的文字。例如:

<RowElement>Column Contents</RowElement>

請注意,如果資料表具有 Element 資料行或巢狀關聯,則 SimpleContent 不能設定為這個資料表的資料行。

Hidden

資料行不會寫入 XML 輸出。

請參閱

概念

DiffGram
巢狀 DataRelation
將 DataSet 結構描述資訊寫為 XML 結構描述 (XSD)

其他資源

在 DataSet 中使用 XML
使用 ADO.NET 中的 DataSets