以 XML 数据形式编写数据集内容 (ADO.NET)
在 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 时将 DataRelation 的 Nested 属性设置为 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 元素形式编写,列的内容以元素文本形式编写。 例如:
|
Attribute |
对于属性名称为 ColumnName 的当前行,列以 XML 元素的 XML 属性形式编写,列的内容以属性值形式编写。 例如:
|
SimpleContent |
列的内容以 XML 元素中当前行文本的形式编写。 例如:
请注意,不能为具有 Element 列或嵌套关系的表的列设置 SimpleContent。 |
Hidden |
不在 XML 输出中编写该列。 |