Если вас заинтересовало это предложение, обращайтесь за дополнительной информацией по адресу team@rsdn.ru. Мы открыты для любых начинаний.
Ну ладно, что дальше говорить, когда надо смотреть! Итак, приглашаю всех познакомиться с новым сайтом, созданным программистами для программистов, познакомиться с RSDN !
Алекс Jenter jenter@rsdn.ru RSDN Developer
Программирование на Visual C++
Выпуск №41 от 22 апреля 2001 г.
Добрый день, уважаемые подписчики!
Ну что ж, похоже старт у проекта RSDN получился достаточно хороший, особенно если судить по вашим откликам. Большое спасибо всем, кто заглянул на сайт – я уверен, что вы не остались разочарованы. А тем, кто еще не видел RSDN, настоятельно рекомендую посмотреть – наверняка вы найдете что-то интересное для себя. К тому же теперь на сайте появилась полноценная поисковая система.
Как я и обещал, с этого выпуска рассылка начинает публиковать статьи из RSDN, касающиеся программирования на Visual C++. Но не надо думать, что рассылка будет вам бесполезной, если вы регулярно читаете статьи на сайте. Рассылка будет экономить ваши усилия и ваше время; кроме того, некоторые статьи в рассылке будут появляться даже раньше, чем на сайте.
СТАТЬЯ
Использование парсера MSXML для работы с XML-документами
Автор: Кен Скрибнер (Kenn Scribner)
Перевод: Александр Шаргин
Источник: "Visual C++ Developer", Ноябрь 2000
Демонстрационный проект XMLNodeExerciser
Парсер MSXML основывается на объектной модели документа XML (XML Document Object Model, XML DOM). Поэтому важно в первую очередь рассмотреть различные объекты, связанные с документом. Они приведены в таблице 1. Эти объекты позаимствованы прямо из спецификаций XML. MSXML предпренимает дополнительные усилия для стыковки объектов XML DOM с моделью COM. Благодаря этому достаточно просто установить, какому объекту модели XML DOM соответствует тот или иной COM-интерфейс MSXML. Например, IXMLDOMNode представляет DOM-объект Node (узел).
Таблица 1. Объекты XML DOM и их использование
Объект DOM |
Назначение |
DOMImplementation |
Объект, который можно запросить об уровне поддержки модели DOM |
DocumentFragment |
Представляет часть дерева (хорошо подходит для операций Вырезать/Вставить) |
Document |
Представляет узел верхнего уровня в дереве |
NodeList |
Объект-итератор для доступа к узлам XML |
Node |
Расширяет базовое понятие помеченного элемента (tagged element) в XML |
NamedNodeMap |
Поддержка пространства имён и итерации для коллекций атрибутов |
CharacterData |
Объект для манипулирования текстом |
Attr |
Представляет атрибут(ы) элемента |
Element |
Узел, представляющий элемент XML (удобен для доступа к атрибутам) |
Text |
Представляет текст, содержащийся в элементе или атрибуте |
CDATASection |
Используется для отключения разбора и валидации некоторых разделов XML |
Notation |
Содержит нотацию, расположенную в DTD (Document Type Definition, описание типов документа) или в схеме |
Entity |
Представляет разобранную или неразобранную сущность |
EntityReference |
Представляет узел, ссылающийся на некоторую сущность |
ProcessingInstruction |
Представляет инструкцию обработки |
Иногда это может сбивать с толку, но объекты XML-документа могут быть (и часто бывают) полиморфными. Так, узел (Node) в то же самое время является элементом (Element). Это вносит путаницу, когда вы решаете, какой объект DOM требуется для совершения некоторого действия. Вы создаёте узлы, используя объект документа (Document), но если вам требуется добавить атрибуты к только что созданному узлу, вам придётся поработать с ним как с одним из элементов. Если в отношениях между объектами и действиями над ними и существует какая-то закономерность, мне пока не удалось открыть её в процессе каждодневной работы. Я постоянно обращаюсь к документации в MSDN, чтобы посмотреть, какой интерфейс предоставляет методы, нужные мне для решения той или иной задачи. Методы различных объектов логически сгруппированы, и, по-видимому, именно этот принцип (группировка логически связанных операций) был использован при проектировании DOM.
Таким образом, весь фокус состоит в том, чтобы получить у парсера MSXML нужный DOM-объект, реализацию которого предоставляет объект COM. Обычная последовательность действий подразумевает создание COM-объекта самого MSXML, у которого затем можно запросить (или получить каким-то другим способом) указатели на другие объекты XML DOM (которые в свою очередь тоже являются COM-объектами).
Читать дальше