![]() |
Технология Клиент-Сервер 2004'1 |
||||||
|
С момента первого появления XML на сцене в конце 90-х разработчики пытались найти эффективный способ переноса в XML своих объектных моделей – как в целях передачи данных, так и для манипуляций с данными через такие механизмы, как XSLT. Сперва разработчикам приходилось напрямую работать с данными, но это – слишком кропотливая работа, поскольку приходилось быть крайне аккуратным с семантикой XML, а также обрабатывать особые случаи, например, встречающиеся в данных спецсимволы типа "<" или "&".
Microsoft .NET Framework значительно упрощает работу с XML. Заботу о семантике XML теперь можно переложить на класс System.Xml.XmlTextWriter. Этот класс очень прост в использовании, но, как показывает следующий пример, порождает весьма многословный код:
Если точность представления результата особо не важна, можно одним вызовом метода заставить класс System.Xml.Serialization.XmlSerializer сериализовать существующий граф объектов. Однако у всех этих механизмов есть один общий недостаток. Нет способа фильтровать выдаваемые данные или обращаться к ним с запросами, если все они не загружен в объект XmlDocument, даже если из всего результата интерес представляют один-два узла.
Ниже мы посмотрим, как применить XPath-запросы и XSLT к объектам напрямую, без сериализации.
Использование ObjectXPathNavigator с графом объектов позволяет использовать гибкость и мощь программной модели XML без лишних накладных расходов на сериализацию всего графа объектов в XmlDocument. Благодаря дизайну фреймворка System.Xml, ObjectXPathNavigator может быть использован и в других сценариях обработки XML. Например, в XslTransform для декларативной XSLT-транс формации любого графа объектов.
Copyright © 1994-2016 ООО "К-Пресс"