当没有在元素上指定maxOccurs时,为什么xjc不生成List属性?

时间:2014-06-24 21:51:12

标签: jaxb

我的架构包含没有定义的序列,如下所示

    <complexType name="CultureInfo">
      <sequence>
        <element name="A" type="string"/>
        <element name="B" type="string"/>
      </sequence>
    </complexType>

运行xjc后,JAXB不生成A和B作为List&lt;&gt;总是只有一个实例。 我知道我可以通过添加

来解决这个问题
    <xs:sequence maxOccurs="unbounded">

不幸的是,我无法更改架构。我想知道并获得一些冲突的信息,默认意味着如果没有指定maxOccurs,A和/或B可以多次出现吗?有些网站说是,有些人说不,JAXB说没有(这就是为什么没有List&lt;&gt;)。

1 个答案:

答案 0 :(得分:0)

如果未指定maxOccurs,则默认为1在XML架构中。

来自http://www.w3.org/TR/xmlschema-0/部分 2.2.1发生限制

  

在PurchaseOrderType中,comment元素是可选的,因为   其声明中minOccurs属性的值为0.一般情况下,   当minOccurs的值为1或时,需要出现一个元素   更多。确定元素可能出现的最大次数   通过其声明中的maxOccurs属性的值。这个值   可以是正整数,例如41,或者是无界的   表示没有最大出现次数。默认值   对于minOccurs和maxOccurs属性都是1.因此,当   如果没有maxOccurs属性声明注释等元素,   元素可能不会出现多次。如果你指定,请确保   只有minOccurs属性的值,它小于或等于   maxOccurs的默认值,即它是0或1.同样,如果你   仅为maxOccurs属性指定一个值,它必须更大   大于或等于minOccurs的默认值,即1或更多。如果   两个属性都被省略,元素必须恰好出现一次。