質問

XJCコマンドラインツールを使用して、XSDスキーマファイルからJavaクラスを生成します。 ObjectFactoryクラスは不完全なコンテンツを生成します。 JAXBElement<Type> createType装飾なしで作成メソッドを生成します。

この理由は何ですか? よろしく ドミニク

役に立ちましたか?

解決

JAXB2 XJCで生成されたバインディングの一部のタイプのみにJAXBElementラッパーが必要です。 @XMLRootElementアノテーションを持つタイプはラッパーを必要としないため、オブジェクトファクトリはラッパーを生成しません。

他のヒント

JAXBは、XSDにcomplexType定義と、同じ名前のcomplexTypeを使用する個別の要素定義の両方が含まれている場合にのみ、オブジェクトインスタンスからJAXBElementを作成するファクトリメソッドを生成します。例:

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

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

この場合、JAXBは生成されたクラスに@XmlRootElementアノテーションを付けませんが、オブジェクトインスタンスからJAXBElementを作成するために必要なファクトリメソッドを提供します。そうすれば、非ルート要素タイプのインスタンスをルート要素として簡単にシリアル化できます。

したがって、トップレベル要素として使用するcomplexType定義に加えて、同じ名前の<!> quot; element <!> quot; -declarationを追加するだけで、ObjectFactoryは期待されるファクトリーメソッド。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top