3

JAXB 2.1を使用して、変更できないいくつかのXSDファイル(実際にはWSDLファイルから取得)からJavaクラスを生成していますが、複合型の制限に関連する問題があります。制限の1つは、オカレンス構成をからminOccurs="0" maxOccurs="unbounded"に変更しますminOccurs="0" maxOccurs="0"。したがって、このフィールドは制限付きタイプでは不要になりました。しかし実際には、JAXBは0ではなく[0..1]カーディナリティを持つ制限付きクラスを生成します。

ちなみに、<xjc:treatRestrictionLikeNewType />XSD制限がJavaクラスの継承にマップされないように、世代は調整されています。

次に例を示します。

複合型Aでフィールドを定義する方法は次のとおりです。

<element name="qualifier" type="CR" maxOccurs="unbounded" minOccurs="0"/>

Aを制限する別の複合タイプBで同じフィールドを制限する方法は次のとおりです。

<element name="qualifier" type="CR" minOccurs="0" maxOccurs="0"/>

Aで生成されたクラスには、次のものがあります。

@XmlElement(name = "qualifier")
protected List<CR> qualifiers;

そして、Bで生成されたクラスには次のものがあります。

protected CR qualifiers;

JAXBについての私の理解が不十分なため、XmlElement注釈がないため、JAXBはこのフィールドをマーシャリング/アンマーシャルしないように指示されます。私が間違っている?私が正しければ、JAXBにqualifiersフィールドをまったく生成しないように指示する方法はありますか?これは、制約を尊重するため、私の意見でははるかに優れた世代になるでしょう。

何かアイデア、トピックについての考えはありますか?

ありがとう!!

4

2 に答える 2

0

タイプが必要ない場合は、minOccurs = "0"だけで十分です、いいえ?ドキュメントに含まれていない可能性のある要素を定義しようとしているようです。これは有効ですが、意味がありません。

于 2010-06-17T08:42:32.937 に答える
0

わかりました。

これは基本的に、<xjc:treatRestrictionLikeNewType />カスタマイズとカスタマイズの間の相互作用の問題<xjc:simple />です。単純なものを削除すると、フィールドは生成されなくなります。

これは、JAXBの実験的なパスを歩くときに起こることです;)

于 2010-06-17T09:40:54.863 に答える