6 Stimmen

JAXB XJC-Codegenerierung - ObjectFactory-Klasse ist unvollständig

Ich generiere Java-Klassen aus meiner XSD-Schemadatei mit dem XJC-Befehlszeilentool. Die ObjectFactory-Klasse erzeugt unvollständige Inhalte. Sie generiert Erstellungsmethoden ohne JAXBElement<Type> createType Dekoration.

Was könnte der Grund dafür sein? Mit freundlichen Grüßen Dominik

4voto

skaffman Punkte 389758

Nur einige Typen in einer JAXB2 XJC-generierten Bindung benötigen JAXBElement Umschläge. Die Typen, die das @XMLRootElement Annotation benötigen keinen Wrapper, so dass die Objektfabrik auch keinen erzeugt.

0voto

Mirko Klemm Punkte 1988

JAXB generiert Factory-Methoden, die ein JAXBElement aus einer Objektinstanz erzeugen, nur dann, wenn Ihre XSD sowohl eine complexType-Definition als auch eine separate Element-Definition enthält, die diesen complexType mit dem gleichen Namen verwendet, zum Beispiel:

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

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

In diesem Fall versieht JAXB die generierte Klasse nicht mit einer @XmlRootElement-Annotation, sondern stellt die Factory-Methoden bereit, die Sie benötigen, um ein JAXBElement aus der Objektinstanz zu erstellen. Auf diese Weise können Sie Instanzen von Nicht-Root-Element-Typen problemlos als Root-Elemente serialisieren.

Fügen Sie also einfach eine "element"-Deklaration mit demselben Namen zusätzlich zu jeder complexType-Definition hinzu, die Sie als Element der obersten Ebene verwenden wollen, und ObjectFactory wird die erwarteten Fabrikmethoden generieren.

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