Пример работы с JAXB. Сохраняем Java объект в XML, восстанавливаем объект из XML

Пример работы с JAXB. Сохраняем Java объект в XML, восстанавливаем объект из XML

JAXB (Java Architecture for XML Binding) — Java API для маршалинга объекта в XML и восстановления объекта из XML файла. Изначально JAXB был отдельным проектом, но своей простотой и удобством быстро завоевал популярность Java разработчиков. Именно поэтому в Java 6 JAXB стал частью JDK, а в Java 7 прокачался до версии 2.0.

Ранее мы уже работали с XML в Java с помощью JDOM ParserStAX Cursor APIDOM Parser и других способов, а в этой статье научимся отображать (ставить в соответствие) Java классы и XML файлы с помощью JAXB.

Теория по JAXB

JAXB использует аннотации, поэтому работать с ним легко и просто. Чтобы сохранить Java объект в XML файл, мы должны проставить необходимые JAXB аннотации в классе и методах класса, а затем создать объект Marshaller для преобразования/сериализации/сохранения/маршалинга (кому как удобно это называть) объекта в XML.

Также есть специальный класс JAXBContext, который является точкой входа для JAXB и предоставляет методы для сохранения/восстановления объекта.

Основные JAXB аннотации

  • Аннотация @XmlRootElement определяет корневой элемент для содержимого XML.
  • Аннотация @XmlType используется для упорядочения элементов в XML.
  • Аннотацией @XmlTransient помечается то, что не будет не записано в XML.
  • Аннотацией @XmlAttribute помечается то, что будет использовано в качестве атрибута.
  • Аннотация @XmlElement(name="qwerty") — создаст элемент с именем «qwerty».

Также часто используются следующие аннотации:

  • @XmlElementWrapper — обертка вокруг коллекций для читабельности сгенерированного XML
  • Объекты другого класса помечаются аннотацией @XmlSeeAlso.
  • @XmlEnum и @XmlEnumValue — для Enum и значений
  • @XmlElements — создание контейнеров для нескольких @XmlElement

Подробнее с другими аннотациями вы можете ознакомиться на официальном сайте JAXB.

Сохраняем Java объект в XML и восстанавливаем его с помощью JAXB

Ниже представлена простая программа преобразования объекта в XML и его обратная конвертация из XML в Java объект.

Создадим класс Student и расставим нужные нам аннотации:

Теперь создадим класс JaxbWorker, который будет преобразовывать Java объект в XML и считывать его обратно из XML в Java объект:

Теперь запустим нашу программу и посмотрим содержимое сгенерированного XML файла:

Как видите, здесь есть все, что мы указали в аннотациях:

  • Поле language сохранилось, как lang благодаря аннотации @XmlElement(name = "lang")
  • Поле studPassword было проигнорировано благодаря аннотации @XmlTransient

И смотри на вывод в консоль восстановленных данных из XML документа:

Это был пример сохранения Java-объекта в XML и его восстанавливаем из XML с помощью JAXB.

Скачать проект со всеми исходными кодами.

Подписывайтесь на новые статьи по Java и Android!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *