2010-06-17 21 views
3

我使用JAXB 2.1從幾個我無法修改的XSD文件(實際上來自WSDL文件)中生成Java類,並且我遇到了有關複雜類型限制的問題。 在限制之後,將發生的配置從minOccurs="0" maxOccurs="unbounded"修改爲minOccurs="0" maxOccurs="0"。因此這個字段在限制類型中不再需要。但實際上,JAXB使用[0..1]基數而不是0生成受限類。JAXB代碼生成:限制類型 - >如何刪除零出現字段?

順便說一句,該生成與<xjc:treatRestrictionLikeNewType />一起調整,以便XSD限制不會映射到Java類繼承。

下面是一個例子:

這裏是一個字段是在複雜的類型A中定義的方法:

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

這裏是相同的字段在另一個複雜類型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字段? 這在我看來是一個更好的一代,因爲它尊重約束。

任何想法,關於這個話題?

謝謝!

回答

0

如果不需要類型,那麼單獨使用minOccurs =「0」應該足夠,否?看起來你正試圖定義一個可能不包含在文檔中的元素 - 雖然它是有效的,但是沒有意義。

+0

是的,你是對的,但我沒有手的XSD文件。 我必須處理它;) – reef 2010-06-17 08:43:48

0

好的我想通了。

這基本上是<xjc:treatRestrictionLikeNewType />定製和<xjc:simple />之間的交互問題。如果我刪除了簡單的字段,則不會生成字段!

這就是當你走JAXB的試驗道路上發生的事情;)