jaxbНачало работы с jaxb


замечания

В этом разделе представлен обзор того, что такое jaxb, и почему разработчик может захотеть его использовать.

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

Генерация кода из XSD

JAXB может использоваться для генерации классов из модели, определенной в XSD. Затем будет возможно прочитать XML-документ, сделанный против этого XSD, непосредственно как экземпляры java и обратно сохранить эти экземпляры как XML-документ.

Возьмите следующий XSD, сохраненный в файле с именем SimpleModel.xsd

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
 targetNamespace="http://myCorp/schemas/simpleModel"
 xmlns:simple="http://myCorp/schemas/simpleModel"
 elementFormDefault="qualified"
 attributeFormDefault="unqualified">
 
 <complexType name="Person">
     <sequence>
         <element name="FirstName" type="string"/>
         <element name="LastName" type="string"/>
         <element name="DateOfBirth" type="dateTime"/>
     </sequence>
 </complexType>
 
</schema>
 

Вы можете использовать JAXB для автоматического создания классов для соответствия этому XSD с помощью этой командной строки (если ваша папка bin JDK находится на вашем пути)

xjc SimpleModel.xsd
 

Это создаст пакет, основанный на пространстве имен вашего XSD (здесь mycorp.schemas.simplemodel) со следующими классами:

  • ObjectFactory.java
  • package-info.java
  • Person.java

ObjectFactory используется для создания экземпляров класса (ов), которые были сгенерированы. В некоторых случаях это кажется тривиальной оболочкой вокруг

new Person();
 

Но в более сложных случаях он создаст надлежащие обертки вокруг ваших экземпляров, предоставляя отсутствующую ссылку для правильной сортировки и отмены маршрута объектов в XML и из него.

В файле package-info.java содержится информация о XSD в целом.

Все остальные файлы являются классами, полученными из модели, описанной в XSD. Здесь мы имеем только Person.java, поскольку в нашей модели есть только один объект.

Использование других аргументов командной строки Jaxb и XJC придадут вам огромную власть над сгенерированным кодом. XJC также предоставляет средства для использования или создания плагинов, чтобы перейти к ним и делать такие вещи, как:

  • Пусть сгенерированный код реализует интерфейс или расширяет класс.
  • Автоматически генерировать toString, hashcode, equals и т. Д. С классом.
  • Автоматически сопоставлять типы xml (простые или сложные) и JavaType.
  • Внедрить собственный код или аннотации в сгенерированном коде.

И многое другое

Вы также можете использовать другие инструменты для взаимодействия с xjc для вас, плагины Maven (как минимум 4, о которых я знаю), Ant и т. Д. Часто эти инструменты могут выполнять те вещи, которые трудно получить только с помощью командной строки Reference ,

Установка или настройка

Реализация JAXB Reference (JAXB-RI) была включена в комплект разработки Java с момента обновления JDK 6 3.

Дополнительную информацию о версии JAXB-RI, включенной в конкретные версии JDK, можно найти в руководстве Unofficial JAXB Guide .