В одном из моих проектов я использую маршаллер JAXB2, имея веб-службу, работающую по контракту, и генерирую объекты из схемы XML.
Все работает просто отлично.Но у меня есть проблема с удобством использования кода.Позвольте привести пример.
Схема:
<xs:complexType name="personContractAlertListType">
<xs:sequence>
<xs:element ref="PersonContractAlert" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:element name="PersonContractAlertsResponse">
<xs:complexType>
<xs:sequence>
<xs:element ref="PersonContractAlertList"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Итак, чтобы получить доступ к списку PersonContractAlerts
, мне нужно позвонить:
PersonContractAlertsResponse.getPersonContractAlertListType().getPersonContractAlert()
Что довольно длинно.
Мой вопрос: как мне избавиться от getPersonContractAlertListType()
и перейти непосредственно к: PersonContractAlertsResponse.getPersonContractAlert()
Поскольку этот элемент-обертка действительнотолько для XSD, мне это не нужно в моем объекте Java.
Другими словами, есть:
<Element1>
<Wrapper>
<Element2/>
</Wrapper>
</Element1>
И я хочу, чтобы это в Java отображалось на: Element1.getElement2()
Может быть, использовать адаптеры JAXB.И помните, я не хочу касаться сгенерированных объектов.Это должно быть сделано либо в настройках маршаллера (adaptar, interceptor и т. Д.), Либо в XSD (возможно, есть некоторые настройки для манипуляции).
Большое спасибо!
ОБНОВЛЕНИЕ:
Я нашел учебник по некоторым операциям связывания:
https://jaxb.dev.java.net/guide/Using_different_datatypes.html
Я попытаюсь исследовать использование привязок JAXB.