Изучаем Java EE 7 - [185]

Шрифт
Интервал

DOM

API объектной модели документа (Document Object Model, DOM), как правило, легко использовать. Он обеспечивает привычную древовидную структуру объектов, что позволяет приложению переставлять узлы, а также добавлять или удалять содержимое по мере необходимости.

Модель DOM, как правило, проста в реализации, но ее построение требует чтения всей XML-структуры и хранения всего дерева объектов в памяти. Таким образом, DOM лучше использовать для небольших структур данных XML в случаях, когда скорость не имеет первостепенного значения для приложения или требуется произвольный доступ ко всему содержимому документа. Есть и другие технологии, такие как JDOM и DOM4J, которые дают возможность применять принципы объектно-ориентированного программирования при работе с XML для несложных приложений.

SAX

Потоковая модель анализаторов используется для локальной обработки ресурсов, где произвольный доступ к другим частям данных ресурса не требуется. Простой API для XML (SAX) основан на частичном анализе потоковой модели, в которой данные пошагово поставляются в приложение для чтения клиентом.

SAX основан на событиях и имеет последовательный механизм доступа, что позволяет обрабатывать один элемент за другим. При использовании анализатора SAX событие SAX срабатывает всякий раз, когда выявляется конец элемента XML. Событие включает в себя имя элемента, который только что закончился. Обработчик SAX — это конечный автомат, который может работать только с частью XML-документа, который уже был проанализирован.

SAX является самым быстрым способом анализа XML и подходит для работы с большими документами, которые не могут быть считаны в память целиком. Это, как правило, предпочтительно для высокопроизводительных серверных приложений и фильтров данных, которые не требуют представления данных в памяти. Однако этот способ очень требователен к навыкам разработчика.

Выполнение запросов с помощью XPath

XPath — это язык запросов, предназначенный для опроса XML-структур, которые используют другие XML-стандарты, в том числе XSLT, XPointer и XQuery. Он определяет синтаксис для создания выражений, значение которых оценивается на базе XML-документа.

Выражения XPath могут представлять собой узел, двоичное значение, число или строку. Наиболее распространенный тип выражений XPath — это путь, который представляет собой адрес узла. Например, выражение XPath / — это выражение, которое представляет все узлы XML-документа, начиная с корневого. Ниже приводится выражение XPath, представляющее все узлы unit_price, стоимость которых составляет более 20 (сам XML-документ вы видели выше (см. листинг 12.1)).

>//content/order_line[unit_price>=20]/unit_price

Кроме того, XPath имеет набор встроенных функций, которые позволяют разрабатывать очень сложные выражения. Следующее выражение возвращает текстовый узел-потомок элементов unit_price:

>//content/order_line[unit_price>=20]/unit_price/text()

XQuery — это другой язык запросов, предназначенный для опроса коллекций данных XML с помощью выражений XPath. XQuery синтаксически похож на SQL, его набор ключевых слов включает в себя FOR, LET, WHERE, ORDER BY или RETURN. Ниже представлено простое выражение XQuery, которое использует функцию doc() (она читает документ Order.xml), чтобы вернуть все дочерние узлы order_line, у которых значение атрибута quantity больше 1, а unit_price — менее 50;

>for $orderLine in doc("order.xml")//content/order_line[@quantity>1]

>where $orderLine/unit_price < 50 

>return $orderLine/unit_price/text()

С помощью XQuery можно выполнить и более сложные запросы, создавая сложные условия или упорядочивая результаты.

В некоторых случаях извлечение информации из XML-документа с использованием API может быть слишком громоздким, в основном из-за того, что критерий для поиска данных сложен и необходимо писать много кода для перебора узлов. Языки запросов XML, такие как XPath 1.0 и XQuery, предоставляют многофункциональные механизмы извлечения информации из XML-документов.

Преобразование с помощью XSLT

Ключевым преимуществом XML, по сравнению с другими форматами данных, является способность к преобразованию XML-документа из одного словаря в другой в общем виде. Например, вы можете трансформировать XML-документ в форму, подготовленную к печати, или веб-страницу. Технология, которая позволяет такое преобразование, называется расширяемым языком стилей для преобразований (XSLT).

Проще говоря, XSLT представляет собой фреймворк для трансформации структуры XML-документа, объединив его с таблицей стилей XSL для получения выходного документа. Все, что вам нужно сделать, — это создать таблицу стилей XSL, которая содержит набор инструкций по преобразованию для трансформации исходного дерева в конечное. Затем процессор XSLT преобразует исходный документ, связывая шаблоны исходного дерева XML с шаблонами применяемой таблицы стилей.

Шаблон — это выражение XPath, которое сравнивается с элементами исходного дерева. При совпадении создается часть результирующего дерева. При конструировании результирующего дерева элементы источника могут быть отфильтрованы и переупорядочены, также может быть добавлена произвольная структура.


Рекомендуем почитать
Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


MFC и OpenGL

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Симуляция частичной специализации

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Обработка событий в С++

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.