Изучаем Java EE 7 - [190]
>@XmlRootElement
>public class CreditCard {
>···private String number;
>···private String expiryDate;
>···private Integer controlNumber;
>···private String type;
>···// Конструкторы, методы работы со свойствами
>}
За исключением аннотации @XmlRootElement выше приведен код простого класса Java. С этим механизмом аннотаций и маршалинга JAXB способен создать XML-представление объекта типа CreditCard, которое выглядит как XML-документ, показанный в листинге 12.8.
>
>
>··
>··
>··
>··
>
Маршалинг — это процесс преобразования объекта в XML (рис. 12.2). Обратное преобразование также возможно с помощью JAXB. При демаршалинге в качестве входных данных был бы принят XML-документ из листинга 12.8 и создан экземпляр типа CreditCard со значениями, определенными в документе.
JAXB управляет XML-документами и определениями XML-схем (XSD) прозрачным, объектно-ориентированным способом, что скрывает сложность языка XSD. JAXB может автоматически сгенерировать схему, которая проверила бы XML-структуру кредитной карты, чтобы убедиться, что она имеет правильную структуру и типы данных (благодаря утилите schemagen, поставляющейся с JDK). В листинге 12.9 показана XML-схема (XSD) класса CreditCard.
Рис. 12.2. Архитектура JAXB
>
>
>··
>··
>····
>······
>······
>······
>······
>····
>··
>
Схема, приведенная выше, состоит из простых элементов (controlNumber, ExpiryDate и т. д.) и сложного типа (creditCard). Обратите внимание, что все метки используют префикс xs (xs: element, хs: string и т. д.). Он называется пространством имен и определяется в заголовочном теге документа xmlns (пространство имен XML):
>
Пространства имен создают уникальные префиксы для элементов в виде отдельных документов или приложений, которые используются вместе. В основном они применяются, чтобы избежать конфликтов, которые могут возникнуть, если одинаковое имя элемента появляется в нескольких документах (например, тег
JAXB обеспечивает легкое двустороннее преобразование между объектами Java и XML-структурами. Это позволяет трансформировать объекты Java в XML-данные без необходимости создания сложного кода, который трудно поддерживать и отлаживать. Например, JAXB позволяет легко переносить состояние объекта в XML-данные или сериализовать его сетевой поток. С другой стороны, JAXB позволяет работать с XML-документами, как будто они являются объектами Java без необходимости явно выполнять анализ SAX или DOM в коде приложения.
Связывание
JAXB API, определенный в пакете javax.xml.bind, предоставляет набор интерфейсов и классов для создания XML-документов и генерации классов Java. Другими словами, он связывает две модели. Фреймворк среды выполнения JAXB реализует операции маршалинга и демаршалинга. В табл. 12.7 перечислены основные используемые для них пакеты JAXB.
Пакет | Описание |
---|---|
javax.xml.bind | Фреймворк связывания среды выполнения, имеющий возможность выполнять операции маршалинга, демаршалинга и проверки |
javax.xml.bind.annotation | Аннотации для настройки преобразований между программой Java и XML-данными |
javax.xml.bind.annotation.adapters | Классы-адаптеры JAXB |
javax.xml.bind.attachment | Позволяет выполнять маршалинг для оптимизации хранения двоичных данных и демаршалинг корня документа, содержащего форматы двоичных данных |
javax.xml.bind.helpers | Содержит частичные стандартные реализации некоторых интерфейсов javax.xml.binding |
javax.xml.bind.util | Предоставляет полезные вспомогательные классы |
Как было показано выше (см. рис. 12.2), маршалинг — это процесс преобразования экземпляров аннотированных с помощью JAXB-классов в XML-представления. Кроме того, демаршалинг — это процесс преобразования XML-представлений в дерево объектов. В процессе маршалинга/демаршалинга JAXB также может проверить XML на соответствие схеме XSD (см. листинг 12.9). JAXB может также работать на уровне классов и способен автоматически генерировать схемы из набора классов и наоборот.
В центре JAXB API находится класс javax.xml.bind.JAXBContext. Этот абстрактный класс управляет связыванием между XML-документами и объектами Java, поскольку он предоставляет:
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.