Изучаем Java EE 7 - [187]
В табл. 12.3 приведены некоторые спецификации для технологий XML.
Спецификация | Версия | URL |
---|---|---|
Extensible Markup Language (XML) | 1.1 | http://www.w3.org/TR/xml11/ |
XML Schema | 1.0 | http://www.w3.org/TR/xmlschema-1 |
Extensible Stylesheet (XSLT) | 1.0 | http://www.w3.org/TR/xslt |
XML Path (XPath) | 1.0 | http://www.w3.org/TR/xpath |
Document Object Model (DOM) | level 3 | http://www.w3.org/TR/DOM-Level-3-Core/ |
Simple API for XML (SAX) | 2.0.2 | http://sax.sourceforge.net/ |
Спецификации XML в Java
Экосистема XML была создана W3C. Однако поскольку она работает рука об руку с Java, есть несколько связанных с XML спецификаций, которые были созданы в рамках JCP. Примеров множество — от обработки XML до связывания документов с объектами Java.
JAXP (Java Architecture for XML Processing — архитектура Java для обработки XML) — это низкоуровневая спецификация (JSR 206), которая дает возможность очень гибко обрабатывать XML, а также позволяет использовать SAX, DOM или XSLT. Этот API также применяется JAXB и StAX.
Спецификация JAXB обеспечивает набор API-интерфейсов и аннотаций для представления XML-документов как артефактов Java, что позволяет работать с соответствующими объектами Java. JAXB (JSR 222) обрабатывает демаршалинг документов XML в объекты и наоборот. Даже если JAXB можно использовать для работы с XML, он тесно интегрирован с JAX-WS (смотрите главу 14).
StAX (Streaming API for XML — потоковый API для XML) версии 1.0 (JSR 173) представляет собой API для чтения и записи XML-документов. Основным направлением его деятельности является использование преимуществ древоподобных API (анализаторов DOM) и API, основанных на событиях (анализаторов SAX). Первые позволяют получить произвольный, неограниченный доступ к документу, в то время как вторые занимают меньше памяти и предъявляют меньше требований к процессору.
В табл. 12.4 перечислены все спецификации Java, связанные с XML.
Спецификация | Версия | JSR | URL |
---|---|---|---|
JAXP | 1.3 | 206 | http://jcp.org/en/jsr/detail?id=206 |
JAXB | 2.2 | 222 | http://jcp.org/en/jsr/detail?id=222 |
StAX | 1.0 | 173 | http://jcp.org/en/jsr/detail?id=173 |
Примеры реализаций
Основная цель примеров реализаций (Reference Implementation, RI) — это поддержка разработки спецификаций и их проверка. StAX RI является примером реализации для спецификации JSR-173, которая основана на стандартном анализаторе потоковой модели. StAX был включен в JDK, начиная с версии 1.6, и может быть загружен отдельно для JDK версий 1.4 и 1.5. RI для спецификации JAXP интегрирован в Java SE, как и Metro, который является примером реализации JAXB. Metro — это высококачественная реализация JAXB, которая используется в некоторых продуктах компании Oracle.
Архитектура Java для обработки XML
Архитектура Java для обработки XML (Java Architecture for XML Processing, JAXP) представляет собой API, который обеспечивает общий, независимый от реализации интерфейс для создания и использования SAX, DOM и XSLT API в Java.
До появления JAXP существовали разные несовместимые версии анализаторов и преобразователей XML от различных поставщиков. JAXP предоставил уровень абстракции поверх этих реализаций конкретных производителей API для анализа и преобразования XML-ресурсов.
Обратите внимание, что JAXP не использует другой механизм анализа и преобразования XML-документов. Вместо этого приложения могут применять его для доступа к базовым XML API. Приложения могут заменить реализацию одного поставщика другой.
Используя JAXP, можно анализировать XML-документы с помощью SAX или DOM или преобразовать их в новый формат с помощью XSLT. Архитектура JAXP API изображена на рис. 12.1.
Рис. 12.1. Архитектура JAXР
JAXP состоит из четырех пакетов, перечисленных в табл. 12.5. В них вы найдете интерфейсы и классы, предназначенные для анализа и преобразования XML-данных.
Пакет | Описание |
---|---|
javax.xml.parsers | Общий интерфейс для анализаторов DOM и SAX |
org.w3c.dom | Общий API для работы с DOM в Java |
org.xml.sax | Определяет интерфейсы, использованные для анализаторов SAX |
javax.xml.transform | API XLST для преобразования XML в другие типы документов |
Конфигурирование JAXP
Ввиду гибкости JAXP его можно настроить на использование любой реализации обработки. Однако вы всегда можете применить стандартные значения в качестве примера реализации (JAXP использует Xerces как стандартный синтаксический анализатор XML и Xalan — как процессор XSLT для преобразования XML-документов).
Представьте себе сценарий, в котором имеется более одной совместимой с JAXP реализации в пути к вашим классам. В этом случае вы должны указать JAXP, какой API следует использовать. В зависимости от того, работает ваше приложение в автономном режиме клиента или режиме сервера приложений, вы можете предоставить своему приложению анализатор или преобразователь XML с помощью файла свойств. Например, поместив файл jaxp.properties (стандартный файл, следующий формату java.util.Properties) в подкаталоге lib каталога JRE указывает реализации JAXP использовать заданные фабрики. Ниже представлено содержимое файла jaxp.properties, который определяет, какой строитель DOM, анализатор SAX и преобразователь XSLT будет применяться:
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.