#java #java-8 #jaxb
Вопрос:
Использование java 1.8
, maven-jaxb2-plugin:0.14.0
, и JAXB 2.3.0
когда я создаю классы java из XSD-файлов, а некоторые классы слишком просты, JAXB решает пропустить их. Вместо этого он помещает аннотацию @XmlElementWrapper.
Пример:
<xs:complexType name="AAAA">
<xs:sequence>
<xs:element name="eeee" type="BBBB" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
Превращается в
@XmlElementWrapper(namespace = ...)
@XmlElement(namespace = ....)
protected List<BBBB> eeee;
в журналах я вижу:
[INFO] Replacing field [eeee AAAA]
В данном конкретном случае эта оптимизация мне не помогает, я бы предпочел видеть классы так, как я разработал XSD (например. АААА превратился в класс Java).
Есть ли способ заставить JAXB генерировать все классы и прекратить выполнение шага «Замена поля»?
Ответ №1:
Я не уверен, что правильно понял. Будет лучше, если вы опубликуете полную модель xsd и исходный сгенерированный класс java/ожидаемый класс.
Но, возможно, использование ссылки поможет вам
<xs:complexType name="AAAA">
<xs:sequence>
<xsd:element ref="eeee" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="eeee">
<xs:sequence>
<xs:element name="eeee" type="BBBB" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>