2009-09-14 12 views
6

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

これは何故ですか? よろしくお願いします。 Dominik

答えて

3

JAXB2 XJC生成バインディング内の一部のタイプのみが、JAXBElementラッパーを必要とします。 @XMLRootElement注釈を持つ型はラッパーを必要としないので、オブジェクトファクトリはラッパーを生成しません。

0

あなたのスキーマに要素がありますか?これが通常理由です。

0

JAXBあなたのXSDは、例えば、同じ名前を持つことのcomplexTypeを用いcomplexType定義と別個の要素の定義の両方を含む場合にのみ、オブジェクトインスタンスからJAXBElementのを作成するファクトリメソッドを生成するこので

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

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

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

トップレベルの要素として使用するcomplexType定義に加えて、同じ名前の "要素"宣言を追加するだけで、ObjectFactoryは期待されるファクトリメソッドを生成します。

関連する問題