Запись содержимого набора как данных 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. |