Продолжается подписка на наши издания! Вы не забыли подписаться?

XPath-запросы к объектам с помощью ObjectXPathNavigator

Автор: Стив Саксон
Dell Computer Corporation
Введение
Зачем запрашивать напрямую?
Complex Object Querying
Взаимодействие клиент-сервер
Введение в XPathNavigator
Открываем ObjectXPathNavigator
IXPathNavigable – работа с объектами через XPath
Модель курсора XPathNavigator
Реализация XPathNavigator
Привязка Just-in-Time proxy объекта
Обработка атрибутов
Обработка коллекций и словарей
Вложенный IXPathNavigable не поддерживается
Заключение

Введение

С момента первого появления XML на сцене в конце 90-х разработчики пытались найти эффективный способ переноса в XML своих объектных моделей – как в целях передачи данных, так и для манипуляций с данными через такие механизмы, как XSLT. Сперва разработчикам приходилось напрямую работать с данными, но это – слишком кропотливая работа, поскольку приходилось быть крайне аккуратным с семантикой XML, а также обрабатывать особые случаи, например, встречающиеся в данных спецсимволы типа "<" или "&".

Microsoft .NET Framework значительно упрощает работу с XML. Заботу о семантике XML теперь можно переложить на класс System.Xml.XmlTextWriter. Этот класс очень прост в использовании, но, как показывает следующий пример, порождает весьма многословный код:

Использование XmlTextWriter для выдачи XML

Результат

Если точность представления результата особо не важна, можно одним вызовом метода заставить класс System.Xml.Serialization.XmlSerializer сериализовать существующий граф объектов. Однако у всех этих механизмов есть один общий недостаток. Нет способа фильтровать выдаваемые данные или обращаться к ним с запросами, если все они не загружен в объект XmlDocument, даже если из всего результата интерес представляют один-два узла.

Ниже мы посмотрим, как применить XPath-запросы и XSLT к объектам напрямую, без сериализации.

 

..........

Заключение

Использование ObjectXPathNavigator с графом объектов позволяет использовать гибкость и мощь программной модели XML без лишних накладных расходов на сериализацию всего графа объектов в XmlDocument. Благодаря дизайну фреймворка System.Xml, ObjectXPathNavigator может быть использован и в других сценариях обработки XML. Например, в XslTransform для декларативной XSLT-транс формации любого графа объектов.

"С полным содержанием данной статьи можно ознакомиться в печатной версии журнала"

Copyright © 1994-2016 ООО "К-Пресс"