Базовая техника предусматривает следующее: когда пользователь подтверждает изменение в элементе управления, ваш код извлекает XML-содержимое из объекта XmlDocument, вызывая метод XmlDataSource. GetXmlDocument(). Затем ваш код находит соответствующий узел и вносит изменение, используя средства XmlDocument (как было описано ранее в настоящей главе). Вы можете найти и отредактировать нужные узлы, удалить узлы или добавить новые. И, наконец, ваш код должен вызвать метод XmlDataSource.Save(), чтобы подтвердить изменение.
Хотя такой подход отлично работает, все же не обязательно, что он представляет собой наилучший способ проектирования Web-сайтов. Код, манипулирующий XML, может стать довольно длинным и, вероятно, вы столкнетесь с проблемами параллелизма, если два пользователя выполнят разные изменения одновременно в одном и том же XmlDocument. Если необходимо изменить содержимое XML, то почти всегда лучшей идеей будет реализовать необходимую логику в отдельном компоненте, используя классы XML, описанные ранее.
Теперь, когда вы подробно ознакомились с XML общего назначения и .NET, стоит заглянуть в соседнюю область — поддержку XML, встроенную в ADO.NET.
ADO.NET поддерживает XML через автономные (отключенные) объекты DataSet и DataTable. Оба имеют встроенную возможность конвертировать строки своих коллекций в XML-документ. Вы можете использовать эту функциональность по нескольким причинам. Например, может понадобиться разделить данные с другим приложением на другой платформе. Или же ваша страница просто применяет формат XML для сериализации информации на диск с последующим извлечением ее оттуда. В этом случае вы по-прежнему используете те же методы, хотя действительный формат данных не важен. В табл. 12.2 перечислены все методы XML класса DataSet.
Таблица 12.2. Методы DataSet для работы с XML
| Метод | Описание |
|---|---|
| GetXml() |
Извлекает XML-представление данных DataSet как единую строку. |
| WriteXml() |
Пишет содержимое DataSet в файл или в объекты TextWriter,
XmlWriter или Stream. Вы можете выбрать метод записи,
определяющий, должна ли также записываться в файл информация
протоколирования изменений и информация схемы. |
| ReadXml() |
Читает данные XML из файла или объекта TextReader, XmlReader
либо Stream и использует ее для наполнения DataSet.
GetXmlSehema(). Извлекает схему XML для DataSet XML как единую строку. Никакие
данные не возвращаются. |
| WriteXmlSchema() |
Пишет только схему XML, описывающую структуру DataSet, в файл
или в объекты TextWriter, XmlWriter или Stream. Можно
выбрать включение схемы в начало документа. |
| ReadXmlSchema() |
Читает схему XML из файла или объекта TextReader, XmlReader
или Stream и использует ее для настройки структуры DataSet. |
| InferXmlSchema() | Читает документ XML с содержимым DataSet из файла или объекта
TextReader, XmlReader или Stream и использует его определения
того, какова должна быть структура DataSet. Это альтернатива
применению метода ReadXmlSchema(), однако, она не гарантирует, что
вся информация о типах данных будет предохранена. |
предыдущая следующая страница вначало главы оглавление
564