2011-02-03 16 views
2

,當我得到這個從JAXB文檔的@XmlElementJAXB的minOccurs消失需要設置爲true

如果需要()爲真,那麼的Javabean 屬性映射到XML模式 元素聲明與 的minOccurs = 「1」。對於多值屬性,maxOccurs對於單值財產 爲「1」,對於多值財產爲「無限」 。

然而,當我說

@XmlElement(name = "Name", required = true, nillable = false) 

我得到的的.xsd

<xs:element name="Name" type="xs:string"/> 

我不知道我怎樣才能使的minOccurs等於1。下面好像required = true導致minOccurs消失

編輯 我認識到,默認值是1。反正是有針對的minOccurs在的.xsd

爲1顯示EDIT2 我使用JAXBContext.generateSchema生成模式(FYI)

回答

2

的JAXB規範定義的行爲:

如果需要()爲真,則Javabean的 屬性被映射到XML模式 元素聲明與 的minOccurs = 「1」。對於多值屬性,maxOccurs對於單值財產 爲「1」,對於多值財產爲「無限」 。

的indivual實現(MetroEclipseLink MOXyApache JaxMe)是免費的,他們根據這一規則認爲合適的生成XML架構。 Metro和MOXy(我是技術負責人)選擇使用缺少minOccurs屬性來指示minOccurs =「1」。

+0

再次表示感謝。 – denniss 2011-02-03 21:05:19

1

我不是JAXB專家,但我相信「minOccurs」默認情況下會使用xs:element標記設置爲1。換句話說,如果「的minOccurs」屬性從標籤丟失,其默認值爲1

編輯:對不起,沒看到你的編輯,直到爲時已晚!

0

xs:元素的默認值是minOccurs = 1。 所以它有可能省略屬性,並且仍然有相同的含義,這可能是jaxb正在做的事情。

編輯:看到你的編輯太遲。我從來沒有見過這樣做的方式,但這並不意味着它不可能。

相關問題