Изучаем Java EE 7 - [191]
• класс Unmarshaller, который преобразует XML-документ в граф объектов и, возможно, проверяет XML;
• класс Marshaller, который принимает граф объектов и трансформирует его в документ XML.
Например, чтобы преобразовать наш объект CreditCard в документ XML (листинг 12.10), следует использовать метод Marshaller.marshal(). Этот метод принимает в качестве параметра объект и выполняет операцию маршалинга; конечный тип объекта может быть разным (StringWriter будет хранить строковое представление документа XML, а FileOutputStream сохранит его в файл).
>public class Main {
>··public static void main(String[] args) throws JAXBException {
>····CreditCard creditCard = new CreditCard("1234", "12/09", 6398, "Visa");
>····StringWriter writer = new StringWriter();
>····JAXBContext context = JAXBContext.newInstance(CreditCard.class);
>····Marshaller m = context.createMarshaller();
>····m.marshal(creditCard, writer);
>····System.out.println(writer.toString());
>··}
>}
Данный код создает экземпляр типа JAXBContext с помощью статического метода newInstance(), которому передается корневой класс, для которого необходимо выполнить маршалинг (CreditCard.class). Из созданного объекта Marshaller затем вызывается метод marshal(), который генерирует XML-представление (см. листинг 12.8) объекта, представляющего информацию о кредитной карте, в объект типа StringWriter и отображает его. Такой же подход можно применить для демаршалинга XML-документа в объект с помощью метода Unmarshaller.unmarshal().
Metro, пример реализации JAXB, имеет и другие инструменты, в частности компилятор схем (xjc) и генератор схем (schemaGen). Хотя маршалинг/демаршалинг работает с объектами и XML-документами, компилятор и генератор схем работают с классами и XML-схемами. Эти инструменты можно использовать из командной строки (поставляются в комплекте с Java SE 7) или как цель Maven.
Аннотации
JAXB во многом похож на JPA. Тем не менее вместо преобразования объектов в форму, пригодную для записи в базу данных, JAXB выполняет преобразование в XML-документ. Кроме того, как и JPA, JAXB определяет набор аннотаций (в пакете javax.xml.bind.annotation), позволяющих настроить такое преобразование, и зависит от конфигурации с помощью исключений для минимизации работы разработчика. Если постоянные объекты должны иметь аннотацию @Entity, в JAXB ее аналогом является @XmlRootElement (листинг 12.11).
>@XmlRootElement
>@XmlAccessorType(XmlAccessType.FIELD)
>public class CreditCard {
>··@XmlAttribute(required = true)
>··private String number;
>··@XmlElement(name = "expiry-date", defaultValue = "01/10")
>··private String expiryDate;
>··private String type;
>··@XmlElement(name = "control-number")
>··private Integer controlNumber;
>··// Конструкторы, методы работы со свойствами
>}
Здесь аннотация @XmlRootElement уведомляет JAXB, что класс CreditCard является корневым элементом XML-документа. Если эта аннотация отсутствует, JAXB сгенерирует исключение при попытке выполнить его маршалинг. Этот класс затем преображается в схему, показанную в листинге 12.12 с использованием всех стандартных правил преобразования JAXB (каждый атрибут сопоставляется с элементом и имеет такое же имя).
>
>
>··
>··
>····
>······
>······
>······
>····
>····
>··
>
С помощью объекта Marshaller вы можете легко получить XML-представление объекта CreditCard (см. листинг 12.10). Корневой элемент
JAXB дает возможность настраивать и управлять этой структурой XML. Документ XML состоит из элементов (
В примере, приведенном выше (см. листинг 12.11), эти аннотации используются, чтобы включить номер кредитной карты в атрибут (а не в элемент) и изменить срок истечения карточки и контрольное число. Этот класс будет преобразован в другую схему, в которой номер кредитной карты представлен в виде обязательного атрибута
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.