1. Краткий обзор
Микрософт .NET Framework использует XML Document Object Model (DOM), чтобы обеспечить доступ к
данным в XML документах и дополнительные классы для чтения, записи и навигации в пределах XML
документа. Эти классы поддерживаются пространством имён System.XML, которое также объединяет XML
DOM с механизмом доступа к данным средствами ADO.NET. XMLDataDocument является одним из подклассов
DOM в указанном пространстве имён, и обеспечивает доступ к реляционным данным. XMLDataDocument
отображает XML на реляционные данные в ADO.NET DataSet. Микрософт .NET-based прикладные программы
могут использовать специальные классы в пространстве имён System.XML для управления и обращения
к документам XML и реляционными данными в DataDocument. Этот механизм поддерживает многослойную
архитектуру n-tiered для сбора и распределения данных.
Microsoft .NET XML и средства ADO.NET используют единую модель программирования для доступа к
XML данным (текст, разграниченный структурирующими данные тэгами) и реляционным данным (таблицы,
состоящие из строк и столбцов). XML Framework читает XML данные из любого потока данных в узле
дерева DOM, если к данным можно обращаться программным путём, в то время как ADO.NET Framework
обеспечивает управление и обращение к реляционным данным в пределах объекта DataSet.
Есть три ключевых компонента для доступа к данным в XML Framework и ADO.NET:
- DataSet, представляющий источник реляционных данных в ADO.NET Framework.;
- XMLDocument, использующий DOM в XML Framework.
- XMLDataDocument, объединяющий ADO.NET и XML Framework и представляющий реляционные данные из
DataSet, а также, синхронизирующий их с моделью XML документа.
XMLDataDocument является подклассом XMLDocument. .NET-приложение может использовать XMLDataDocument
для загрузки XML или реляционных данных и управлять ими, используя DOM. Когда XMLDataDocument
загружает реляционные данные, происходит синхронизация данных между DataSet и DOM. После того,
как XMLDataDocument загрузит реляционные данные, приложение может обращаться к ним программным
путём, с помощью .NET XML Framework API.
Классы, которые включают XML и ADO.NET Framework, допускают применение трёх общих сценариев:
| Сценарий | Задачи |
| Доступ к реляционным данным с помощью ADO.NET |
- Создание, и использование DataSet для обращения к реляционным данным без использования XML.
- Чтение, и запись XML данных в/из DataSet без использования XmlDataDocument (любая информация XML, не соответствующая реляционному представлению, будет потеряна.) |
| Доступ к XML документам |
- Создание и использование XmlDocument для обращения к потокам XML данных.
- Использование структурированных данных в XmlDataDocument без таблиц, строк, столбцов, отношений и других реляционных элементов. Это делается аналогично XmlDocument. |
| Доступ к реляционным данным в XML документах (XML и ADO.NET) |
- Структурированные, реляционные данные в XmlDataDocument вместе с DataSet.
- Получить DataSet из XmlDataDocument, в порядке реляционного представления и запроса структурированного контента XML документа.
- Работа с XML представлением реляционных данных в DataSet.
- Поддержка реляционных и основанных на XML компонент для приложений, обслуживающих данные. Например, Вы можете редактировать и показывать реляционные данные без воздействия на точность XML документа, применять XSLT (Extensible Stylesheet Language Transformations) к реляционным данным. Исполнение XPath запросов к реляционным данным. |
1.2. Microsoft .NET XML классы
Представленные ниже классы Микрософт.NET Framework обеспечивают поддержку Xml стандартов и
предоставляют мощный API для доступа к Xml документам. Обеспечивается поддержка пространств имён,
типов данных, XSL схем, XSL операций, сохранения документов, и навигация по документам.
| Класс | Описание |
| XmlDataDocument |
Представляет исполняемый XmlDocument, который может быть связан с объектом ADO.NET
DataSet. Вы можете одновременно просматривать и управлять структурированным XML через реляционное
представление DataSet или представления DOM XmlDataDocument. |
| XmlNavigator (abstract) |
Чтение и запись Xml данных с использованием модели курсора. Обеспечивает Xpath,
поддерживаемый для XmlDocument. Это абстрактный класс. |
| DocumentNavigator |
Обеспечивает cursor-style модель, для управления memory-resident деревом Xml и
поддерживает XPath выражения. Также, предоставляет XmlNavigator для DOM. |
| DataDocumentNavigator |
Чтение и запись реляционных данных с использованием модели курсора. Обеспечивает
поддержку Xpath для XmlDataDocument. Предоставляет XmlNavigator по XmlDataDocument. |
| XmlResolver (abstract) |
Определяет внешние Xml ресурсы, называемые Uniform Resource Identifier (URI). Это
абстрактный класс. |
| XmlUrlResolver |
Определяет внешние Xml ресурсы, называемые URI. Обеспечивает XmlResolver для URL. |
| XmlSchemaCollection |
Содержит набор из пространства имён URI. Каждое пространство имён также имеет
связанный собственный кэш данных, соответствующий XML-Data Schema или W3C Xml Schema. XmlSchemaCollection
может загружать XSD и XDR схемы, и компилировать их во внутренний "cooked schema representation".
Тогда метод Validate() использует это внутреннее представление для эффективной проверки правильности
(в смысле: run-time) любого заданного поддерева. |
| XmlReader (abstract) |
Представляет механизм чтения, который обеспечивает быстрый, non-cached, forward-only
поток доступа к Xml данным. Этот механизм чтения может читать поток или документ Xml. Это абстрактный
класс. |
| XmlTextReader |
Обеспечивает быстрый, non-cached, forward-only поток доступ к Xml данным. Обеспечивает
XmlReader для байтового потока. |
| XmlWriter (abstract) |
Обеспечивает быструю, non-cached, forward-only генерацию правильно построенных Xml
потоков. Этот механизм записи предназначен для записи в поток или документ. Это абстрактный класс. |
| XmlTextWriter |
Обеспечивает быструю, non-cached, forward-only генерацию Xml потоков, содержащих
Xml документы, которые соответствуют спецификации W3C Xml 1.0 и пространству имён в спецификации
Xml. Использует XmlWriter. |
| XmlNameTable (abstract) |
Таблица, группирующая строки, гарантирует, что обеспечиваются эффективные средства
для синтаксического анализатора Xml, и что используется один и тот же объект строки для каждого
повторяющегося элемента и имёни атрибута в Xml документе. |
| XmlNodeReader |
Представляет механизм чтения, который обеспечивает быструю, non-cached отправку
потока доступа к Xml данным в XmlDocument или в определенный XmlNode в рамках XmlDocument. |
| XslTransform |
Преобразовывает Xml данные, используя XSL таблицу стилей. |
| XmlConvert |
Кодирует и декодирует имена в Xml, которые содержат недопустимые символы (такие,
как пробелы или половинчатые символы Katakana) что необходимо при отображении Xml имён без поддержки
или представления схем. |
| XmlException |
Возвращает детализированную информацию о последней ошибке синтаксического анализа,
включая: номер ошибки, номер строки, символьную позицию, и текстовое описание. |