Запись содержимого набора как данных XML

В 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 Description
IgnoreSchema Записывает текущее содержимое DataSet как XML-данные, без схемы XML. Это значение по умолчанию.
WriteSchema Записывает текущее содержимое DataSet в виде XML-данных с реляционной структурой в виде встроенной схемы XML.
Diffgram Записывает весь DataSet как DiffGram, включая исходные и текущие значения. Дополнительные сведения см. в разделе DiffGrams.

При написании XML-представления объекта DataSet , содержащего объекты DataRelation , скорее всего, требуется, чтобы результирующий XML-код содержал дочерние строки каждого отношения, вложенные в связанные с ними родительские элементы. Для этого задайте для свойства DataRelation значение true при добавлении DataRelation в объект DataSetDataRelation. Дополнительные сведения см. в разделе "Вложенные dataRelations".

Ниже приведены два примера записи 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-элементами, атрибутами и текстом

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

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

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

<RowElement ColumnName="Column Contents" />
SimpleContent Содержимое столбца записывается как текст в XML-элементе для текущей строки. Например:

<RowElement>Column Contents</RowElement>

Обратите внимание, что SimpleContent нельзя задать для столбца таблицы с столбцами элементов или вложенными отношениями.
Скрыта Столбец не записывается в выводимый XML.

См. также