In einem meiner Projekte verwende ich JAXB2 marshaller, mit einem contract-first Web Service generiere ich die Objekte aus einem XML Schema.
Alles funktioniert einwandfrei. Aber ich habe ein Problem mit der "Code-Nutzbarkeit". Lassen Sie mich Ihnen ein Beispiel geben.
Schema:
<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>
Um also auf die Liste der PersonContractAlerts
Ich muss anrufen:
PersonContractAlertsResponse.getPersonContractAlertListType().getPersonContractAlert()
Das ist ein bisschen lang.
Meine Frage ist: Wie kann ich die getPersonContractAlertListType()
und gehen Sie direkt zu: PersonContractAlertsResponse.getPersonContractAlert()
Da dieses Wrapper-Element wirklich nur für XSD ist, brauche ich es in meinem Java-Objekt nicht.
Mit anderen Worten: haben:
<Element1>
<Wrapper>
<Element2/>
</Wrapper>
</Element1>
Und ich möchte es in Java zuordnen: Element1.getElement2()
Vielleicht mit JAXB-Adaptern. Und denken Sie daran, dass ich die generierten Objekte nicht berühren möchte. Dies muss entweder in den Marshaller-Einstellungen (Adaptar, Interceptor, etc.) oder in der XSD (vielleicht gibt es einige Einstellungen zu manipulieren) getan werden.
Herzlichen Dank!
UPDATE:
Ich habe eine Anleitung zu einigen Bindungsvorgängen gefunden:
https://jaxb.dev.java.net/guide/Using_different_datatypes.html
Ich werde versuchen, mit JAXB Bindungen zu forschen.