以 XML 数据形式编写数据集内容 (ADO.NET)

更新:November 2007

在 ADO.NET 中可以编写 DataSet 的 XML 表示形式(包含或不包含其架构)。 如果架构信息以内联形式包含在 XML 表示形式中,则使用 XML 架构定义语言 (XSD) 来编写。 架构包含 DataSet 的表定义以及关系和约束定义。

当以 XML 数据形式编写 DataSet 时,DataSet 中的行将以它们的当前版本编写。 不过,也可以用 DiffGram 形式编写 DataSet,从而使行的当前值和原始值都将包含在内。

DataSet 的 XML 表示形式可以写入文件、流、XmlWriter 或字符串。 这些选择在如何传输 DataSet 的 XML 表示形式方面提供了很大的灵活性。 若要以字符串的形式获取 DataSet 的 XML 表示形式,请使用以下示例所示的 GetXml 方法。

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

GetXml 返回 DataSet 的不包含架构信息的 XML 表示形式。 若要将 DataSet 中架构信息写入字符串(作为 XML 架构),请使用 GetXmlSchema

若要将 DataSet 写入文件、流或 XmlWriter,请使用 WriteXml 方法。 向 WriteXml 传递的第一个参数为 XML 输出的目标。 例如,传递包含文件名的字符串、System.IO.TextWriter 对象等。 您可以传递 XmlWriteMode 的另一个可选参数来指定如何编写 XML 输出。

下表显示了 XmlWriteMode 的选项。

XmlWriteMode 选项

说明

IgnoreSchema

以 XML 数据形式编写 DataSet 的当前内容,不包含 XML 架构。 这是默认设置。

WriteSchema

以 XML 数据形式编写 DataSet 的当前内容,以关系结构作为内联 XML 架构。

DiffGram

以 DiffGram 形式编写整个 DataSet,包括原始值和当前值。 有关更多信息,请参见 DiffGram (ADO.NET)

当编写包含 DataRelation 对象的 DataSet 的 XML 表示形式时,您很可能希望所生成的 XML 将每一关系的子行嵌套在它们的相关父元素中。 若要完成此任务,请在向 DataSet 添加 DataRelation 时将 DataRelationNested 属性设置为 true。 有关更多信息,请参见嵌套 DataRelation (ADO.NET)

下面是两个有关如何将 DataSet 的 XML 表示形式写入文件的示例。 第一个示例将所生成的 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 值

说明

Element

这是默认设置。 列以元素名称为 ColumnName 的 XML 元素形式编写,列的内容以元素文本形式编写。 例如:

<ColumnName>Column Contents</ColumnName>

Attribute

对于属性名称为 ColumnName 的当前行,列以 XML 元素的 XML 属性形式编写,列的内容以属性值形式编写。 例如:

<RowElement ColumnName="Column Contents" />

SimpleContent

列的内容以 XML 元素中当前行文本的形式编写。 例如:

<RowElement>Column Contents</RowElement>

请注意,不能为具有 Element 列或嵌套关系的表的列设置 SimpleContent

Hidden

不在 XML 输出中编写该列。

请参见

概念

DiffGram (ADO.NET)

嵌套 DataRelation (ADO.NET)

用 XSD 形式编写数据集架构信息 (ADO.NET)

其他资源

在数据集中使用 XML (ADO.NET)

DataSet、DataTable 和 DataView (ADO.NET)