3 Stimmen

JAXB Java und XSD-Zuordnung

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.

0voto

bdoughan Punkte 144925

Um das gewünschte Objektmodell zu erhalten, können Sie die XPath-basierte Mapping-Erweiterung in EclipseLink JAXB (MOXy) .

-1voto

Gabriel Jiva Punkte 159

Ich bin mir nicht sicher, wie es in Ihrem Fall aussieht, aber im Allgemeinen ist die Eingabe von 30 zusätzlichen Zeichen wahrscheinlich nicht teuer genug, um die Suche nach einer Lösung für dieses Problem zu rechtfertigen. Zumal Eclipse diesen Methodenaufruf automatisch vervollständigt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X