JAXB XJC Codegenerierung - Object Klasse ist unvollständig
Frage
erzeuge ich Java-Klassen aus meiner XSD-Schemadatei XJC Kommandozeilen-Tool verwenden. Die Object Klasse erzeugt unvollständige Inhalte. Es erzeugt Erstellungsmethoden ohne JAXBElement<Type> createType
Dekoration.
Was kann der Grund dafür sein? Grüße Dominik
Lösung
Nur einige Arten in einem JAXB2 XJC generierte Bindung Notwendigkeit JAXBElement
Wrapper. Diese Typen, die die @XMLRootElement
Anmerkung haben nicht den Wrapper benötigen, und so das Objekt Fabrik nicht einen erzeugen.
Andere Tipps
JAXB erzeugt Factory-Methoden, die eine JAXBElement von einer Objektinstanz erstellen nur, wenn Ihr XSD enthält sowohl eine complex Definition und eine separate Element Definition, dass complex mit dem gleichen Namen, zum Beispiel mit:
<complexType name="my-type">
...
</complexType>
<element name="my-type" type="tns:my-type"/>
In diesem Fall JAXB wird die generierte Klasse mit einer @XmlRootElement Annotation nicht mit Anmerkungen versehen, aber die Fabrik Methoden Sie eine JAXBElement aus der Objektinstanz erstellen müssen liefern. Auf diese Weise können Sie Instanzen von nicht-root-Elementtypen als Stammelemente leicht serialisiert werden soll.
Also, sollten Sie nur eine „Element“ -Erklärung mit dem gleichen Namen zusätzlich zu jeder complex Definition hinzufügen Sie beabsichtigen, als Top-Level-Element verwendet werden sollen, und Object die erwarteten Factory-Methoden erzeugen.