为什么jaxb使用一个与Or?</choice>连接的变量转换<choice>中的元素

时间:2014-05-28 20:59:18

标签: jaxb

这让我很困惑,就是如果我有一个如下的架构,

    <xs:element name="api">
      <xs:complexType>
        <xs:choice maxOccurs="unbounded">
          <xs:element ref="a" minOccurs="1" />
          <xs:element ref="b" minOccurs="1" />
          <xs:element ref="c" minOccurs="1" />

CASE1:就像

    <xs:choice maxOccurs="unbounded">

JAXB&#34; xjc -p SomePackageName -d。 ....&#34;会在Api.java中生成一个变量,例如

    protected List<Object> aOrBOrC;

CASE2:但是,如果我将其更改为

    <xs:choice maxOccurs="1">        

JAXB生成

    protected A a;
    protected B b;
    protected C c;

我的问题是在CASE1中,如何单独检索A,B和C的值,因为它只给出了一个变量,尽管它是一个列表。

由于

1 个答案:

答案 0 :(得分:0)

这样做是为了在将对象编组回XML时保留顺序。

根据您的XML Schema,以下文档是有效的(由于选择中的maxOccurs="unbounded",它不能由多个属性表示。

<api>
    <b/>
    <b/>
    <c/>
    <a/>
    <b/>
    <c/>
</api>