Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание

Сохранение DataSet (и DataTable) в формате XML

Сохранение DataSet (и DataTable) в формате XML

В завершение рассмотрения текущего примера напомним, что как DataSet, так и DataTable предлагают поддержку методов WriteXml() и ReadXml(). Метод WriteXml() позволяет сохранить содержимое объекта в локальном файле (или вообще в любом типе System.IO.Stream) в виде XML-документа. Метод ReadXml() позволяет прочитать информацию о состоянии DataSet (или DataTable) из имеющегося XML-документа. Кроме того, как DataSet, так и DataTable поддерживают WriteXmlSchema() и ReadXmlSchema() для сохранения и загрузки файлов *.xsd. Чтобы это проверить, добавьте в метод Main() следующий набор операторов.

static void Main(string [] args) {
 …
 // Сохранение DataSet в виде XML.
 carsInventoryDS.WriteXml("carsDataSet.xml");
 carsInventoryDS.WriteXmlSchema("carsDataSet.xsd");
 // Очистка DataSet и вывод содержимого (должно быть пустым).
 carsInventoryDS.Сlear();
 PrintDataSet(carsInventoryDS);
 // Загрузка и печать DataSet.
 carsInventoryDS.ReadXml("carsDataSet.xml");
 PrintDataSet(carsInventoryDS);
}

Если открыть сохраненный файл carsDataSet.xml, вы увидите, что в нем представлены все столбцы таблицы, закодированные в виде XML-элементов.

‹?xml version="1.0" standalone="yes"?›
‹Car_x0020_Inventory›
 ‹Inventory›
  ‹CarID›0‹/CarID›
  ‹Make›BMW‹/Make›
  ‹Color›черный‹/Color
  ‹PetName›Hamlet‹/PetName›
 ‹/Inventory›
 ‹Inventory›
  ‹CarID›1‹/CarID›
  ‹Make›Saab‹/Make›
  ‹Color›красный‹/Color›
  ‹PetName›Sea Brеeze‹/PеtName›
 ‹/Inventory›
‹/Car_x0020_Inventory›

Наконец, напомним, что тип DataColumn поддерживает свойство ColumnMapping, которое можно использовать для управления представлением столбца в XML-формате. Значением, устанавливаемым для этого свойства по умолчанию, является MappingType.Element. Однако можно потребовать, чтобы столбец CarID представлялся XML-атрибутом, как это сделано ниже в обновленной версии объекта carIDColumn для DataColumn.

Static void Main(string[] args) {
 …
 DataColumn carIDColumn = new DataColumn("CarID", typeof(int));
 …
 carIDColumn.ColumnMapping = MappingType.Attribute;
}

Тогда вы обнаружите следующий XML-код.

‹?xml version="1.0" standalone="yes"?›
‹Car_x0020_Inventory›
 ‹Inventory CarID="0"›
  ‹Make›BMW‹/Make›
  ‹Color›черный‹/Color›
  ‹PetName›Hamlet‹/PetName›
 ‹/Inventory›
 ‹Inventory CarID="1"›
‹Make›Saab‹/Make›
  ‹Color›красный‹/Color›
  ‹PetName›Sea Breeze‹/PetName›
 ‹/Inventory›
‹/Car_x0020_Inventory›

Исходный код. Проект SimpleDataSet размещен в подкаталоге, соответствующем главе 22.

Оглавление книги

Оглавление статьи/книги

Генерация: 2.967. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз