具有无序类型的Jaxb序列

时间:2011-10-27 14:15:11

标签: collections jaxb sequence

使用模式和XML文件我正在尝试创建类型A的元素,它可以包含类型为A,B和C的嵌套元素。元素类型A,B和C都是类型X的扩展所以我想创建一个元素类型的内部,并且我认为我可以按照我想要的顺序添加任何元素A,B或C.只有A可以有嵌套元素。我喜欢这种实现,因为嵌套元素的排序对我们的数据模型很重要,这些元素将是系统中的各种顺序。

<A>
    <B></B>
    <B></B>
    <A>
        <B></B>
        <B></B>
        <C></C>
        <C></C>
    </A>
    <C></C>
</A>

我尝试在XSD文件中做一些事情,使其合法化。

<xs:complexType name="A">
   <xs:complexContent>
      <xs:extension base="X" >
      <xs:sequence>
         <xs:element name="a" type="A" minOccurs="0" />
         <xs:element name="b" type="B" minOccurs="0" />
         <xs:element name="c" type="C" minOccurs="0" />
      </xs:sequence>
      </xs:extension>
      </xs:complexContent>
</xs:complexType>

我尝试使序列只包含抽象类型X的元素,以为我可以在XML文件中使用具体类型A B和C,但这被标记为错误。

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的用例,您可以使用@XmlElementRef注释来利用替换组的XML模式概念。

了解更多信息