Работа с XML
Поскольку сейчас очень часто информация хранится и передается в виде XML-документов, для разработки Web-приложений большое значение имеют средства работы с XML. Основными элементами, необходимыми для облегчения работы с XML-документами, являются их разбор и внутреннее представление XML-данных.
Библиотеки для работы с XML-документами находятся в пакетах javax.xml , org.w3c.dom и org.xml.sax, a также во вложенных в них пакетах. В этих пакетах определяются следующие интерфейсы.
- Общий интерфейс обработчиков XML находится в пакете javax.xml.parsers. Такие обработчики могут быть основаны на простом интерфейсе работы с XML (Simple API for XML, SAX) [15] или на объектной модели документов (Document Object Model, DOM) [16]. Оба этих подхода основаны на стандартах W3C.
- Простой интерфейс для работы с XML (SAX) [15] определяется в пакете org.xml.sax. Это интерфейс, основанный на событиях, — XML-парсер, реализующий его, последовательно разбирает XML-данные и генерирует очередное событие в зависимости от вида обнаруженной конструкции. Для работы с XML-документами необходимо написать ряд обработчиков таких событий, являющихся реализациями интерфейса org.xml.sax.ContentHandler.
- Объектная модель документов (DOM) [16] представляет собой интерфейс работы с XML-документом, представленным в виде дерева его элементов. Java-представление этого интерфейса описано в пакете org.w3c.dom. Одной из его реализаций является JDOM [17], а dom4j [18] предоставляет несколько упрощенную и более удобную с точки зрения Java, но не вполне соответствующую стандарту DOM реализацию.
- Обработка XML-документов может быть построена на базе расширяемого языка трансформаций на основе таблиц стилей (Extensible Stylesheet Language Transformations, XLST) [19]. При этом процесс обработки документов описывается в виде XSLT-программы, которая затем подается на вход интерпретатору XSLT (XSLT-процессору) вместе с обрабатываемым XML-документом. Интерфейсы для работы с XSLT определены в пакете javax.xml.transform. Широко используемыми XSLT-процессорами являются Saxon [20] и Xalan [21].
- В новую версию J2EE 5.0, ожидаемую в 2006 году, должны войти интерфейсы для потоковой обработки XML-документов (Streaming API for XML, StAX). В этом подходе XML-документ рассматривается как поток различных конструкций, которые становятся доступными по запросу (pull-модель), в отличие от работы на основе событий в SAX, когда каждая конструкция порождает событие, которое нужно обработать (push-модель). Обработка XML-документов в стиле StAX гораздо более гибкая, чем в SAX, и вполне сравнима с ней по удобству. В настоящее время уже доступны спецификации интерфейсов StAX [22] и несколько их реализаций.
В целом техника работы с XML-документами в .NET опирается на реализацию объектной модели документов XML (DOM) и на механизм разбора, аналогичный StAX, реализуемый классом System.Xml.XmlReader. Классы, реализующие различные парсеры XML, различные варианты представления XML-документов, а также их трансформацию на основе XSLT-описаний, находятся в пространстве имен System.Xml, разбросанном по сборкам System.Data, System.Data.SqlXml и System.Xml.
Одной из особенностей работы с XML в .NET является встроенная возможность работы с XML-данными в рамках механизмов ADO.NET (в основном предназначенных для работы с реляционными СУБД) с помощью класса System.Xml.XmlDataDocument.