Поделиться через


Запись содержимого DataSet в виде XML-данных (ADO.NET)

Обновлен: November 2007

В ADO.NET можно записать XML-представление объекта DataSet вместе со схемой или без нее. Если информация схемы встраивается внутрь 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 (ADO.NET).

При записи XML-представления объекта DataSet, который содержит объекты DataRelation, скорее всего, будет необходимо, чтобы в результирующем XML-коде дочерние строки для каждой связи были вложены в связанные с ними родительские элементы. Для этого установите для свойства Nested объекта DataRelation значение true, когда DataRelation добавляется в DataSet. Дополнительные сведения см. в разделе Вложенность объектов DataRelation (ADO.NET).

Далее даются два примера того, как записать в файл 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-элементами, атрибутами и текстом

С помощью свойства ColumnMapping объекта DataColumn можно задать, как столбец таблицы представляется в XML-коде. В следующей таблице показаны различные значения MappingType для свойства ColumnMapping столбца таблицы, а также получающийся в результате XML-код.

Значение MappingType

Описание

Element

Это настройка по умолчанию. Столбец записывается как XML-элемент, где ColumnName — имя элемента, а содержимое столбца записывается как текст элемента. Например:

<ColumnName>Column Contents</ColumnName>

Attribute

Столбец записывается как XML-атрибут XML-элемента для текущей строки, где ColumnName — это имя атрибута, а содержимое столбца записывается как значение атрибута. Например:

<RowElement ColumnName="Column Contents" />

SimpleContent

Содержимое столбца записывается как текст в XML-элементе для текущей строки. Например:

<RowElement>Column Contents</RowElement>

Следует отметить, что SimpleContent нельзя установить для столбца таблицы, имеющей столбцы Element или вложенные связи.

Hidden

Столбец не записывается в выводимый XML.

См. также

Основные понятия

Объекты DiffGram (ADO.NET)

Вложенность объектов DataRelation (ADO.NET)

Запись сведений схемы DataSet в виде XSD (ADO.NET)

Другие ресурсы

Использование XML в DataSet (ADO.NET)

Объекты DataSet, DataTable и DataView (ADO.NET)