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
フィールドをまったく生成しないように指示する方法はありますか?これは、制約を尊重するため、私の意見でははるかに優れた世代になるでしょう。
何かアイデア、トピックについての考えはありますか?
ありがとう!!