JAXBコード生成:制限付きタイプ - >ゼロ発生フィールドを削除する方法は?

StackOverflow https://stackoverflow.com/questions/3060052

  •  28-09-2019
  •  | 
  •  

質問

JaxB 2.1を使用して、変更できないいくつかのXSDファイルからJavaクラスを生成します(実際にWSDLファイルから来る)。複雑なタイプの制限に関連する問題があります。制限の場合、からの発生構成を変更します 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"/>

生成されたクラスで私が持っている:

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

そして、私が持っているB生成クラスに:

protected CR qualifiers;

Jaxbの私の不十分な理解で XmlElement 注釈は、Jaxbに、このフィールドをマーシャル/マーシャルにしないように指示します。私が間違っている?私が正しいなら、Jaxbに生成しないように言う方法があります qualifiers フィールド?これは私の意見では、制約を尊重するので、はるかに良い世代です。

何かアイデア、トピックに関するthougths?

ありがとう!!

役に立ちましたか?

解決

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

他のヒント

わかりました、私はそれを理解しました。

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

それはあなたがJaxbの実験的な道を歩くときに起こることです;)

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