Генерация кода JAXB XJC - класс ObjectFactory является неполным

StackOverflow https://stackoverflow.com/questions/1422523

  •  07-07-2019
  •  | 
  •  

Вопрос

Я генерирую классы Java из моего файла схемы XSD с помощью инструмента командной строки XJC. Класс ObjectFactory генерирует неполное содержимое. Он генерирует методы создания без JAXBElement<Type> createType декорации.

Что может быть причиной этого? С уважением Dominik

Это было полезно?

Решение

Только некоторые типы в привязке, сгенерированной JAXB2 XJC, нуждаются в обертках JAXBElement. Те типы, которые имеют аннотацию @XMLRootElement, не нуждаются в оболочке, поэтому фабрика объектов не генерирует ее.

Другие советы

JAXB генерирует фабричные методы, которые создают JAXBElement из экземпляра объекта, только если ваш XSD содержит как определение complexType, так и отдельное определение элемента, используя этот complexType с тем же именем, например:

<complexType name="my-type">
   ...
</complexType>

<element name="my-type" type="tns:my-type"/>

В этом случае JAXB не будет аннотировать сгенерированный класс аннотацией @XmlRootElement, но предоставит фабричные методы, необходимые для создания JAXBElement из экземпляра объекта. Таким образом, вы можете легко сериализовать экземпляры типов без корневых элементов в качестве корневых элементов.

Таким образом, вам нужно просто добавить объявление " element " с тем же именем в дополнение к любому определению complexType, которое вы собираетесь использовать в качестве элемента верхнего уровня, и ObjectFactory сгенерирует ожидаемые фабричные методы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top