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


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

При написании XML-представления объекта DataSet , содержащего объекты DataRelation , скорее всего, требуется, чтобы результирующий XML-код содержал дочерние строки каждого отношения, вложенные в связанные с ними родительские элементы. Для этого задайте для свойства DataRelation значение 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-элементами, атрибутами и текстом

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

Значение MappingType Описание
Элемент Это значение по умолчанию. Столбец записывается как XML-элемент, в котором Имя столбца — имя элемента, а содержимое столбца записывается в виде текста элемента. Рассмотрим пример.

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

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

<RowElement>Column Contents</RowElement>

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

См. также