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

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top