На заметку! .NET 2.0 добавляет поддержку XML непосредственно в класс DataTable. Это значит, что вы можете использовать методы ReadXml(), WriteXml(), ReadXmlSchema() и WriteXmlSchema() класса DataTable для чтения и записи единственной таблицы в DataSet.
Применение ХМL-методов DataSet достаточно просто, как вы убедитесь на следующем примере. Этот пример использует на странице два элемента управления GridView. Первый DataSet наполняется непосредственно из таблицы Employees базы данных Northwind. (Этот код мы не приводим, поскольку он аналогичен тому, что вы видели в предыдущих главах.) Второй DataSet наполняется из XML.
Вот как это работает: как только DataSet создан, вы можете сгенерировать файл схемы XML, описывающий структуру DataSet, и XML-файл, включающий содержимое каждой строки. Самый легкий подход — использовать для этого методы WriteXmlSchema() и WriteXml() класса DataSet. Эти методы представлены в нескольких перегрузках, включая версию, позволяющую писать данные непосредственно в физический файл. Когда вы пишете XML-данные, то можете выбирать между несколькими слегка отличающимися форматами, специфицируя XmlWriteMode. Можно указать, что вы хотите сохранять и данные, и схему в одном файле (XmlWriteMode.WriteSchema), только данные (XmlWriteMode.IgnoreSchema) или же данные как с текущими, так и исходными значениями (XmlWriteMode.DiffGram).
Так выглядит код для сохранения DataSet, в XML-файле:
string xmlFile = Server.MapPath("Employees.xml");
ds.WriteXml(xmlFile, XmlWriteMode.WriteSchema);
Здесь в текущей папке создается файл Employees.xml.
После этого можно выполнить обратную процедуру, создав новый объект DataSet и заполнив его данными из XML-файла, применив для этого метод DataSetReadXml() следующим образом:
DataSet dsXml = new DataSet("Northwind");
dsXml.ReadXml(xmlFile);
Это полностью воссоздаст DataSet, вернув его в исходное состояние.
Если вы хотите увидеть структуру сгенерированного файла Employees.xml, откройте его в Internet Explorer, как показано на рис. 12.15. Обратите внимание, что его первая часть содержит схему, описывающую структуру таблицы (имя, тип и размер всех полей), за которой следуют сами данные.
XML-файл для DataSet следует предопределенному формату, подчиняющемуся нескольким простым правилам:
предыдущая следующая страница вначало главы оглавление
565