Collections 具有无序类型的Jaxb序列

Collections 具有无序类型的Jaxb序列,collections,jaxb,sequence,Collections,Jaxb,Sequence,使用模式和XML文件,我试图创建一个类型为a的元素,它可以包含类型为a、B和C的嵌套元素。元素类型a、B和C都是类型X的扩展。因此我想在类型a元素内部创建一个元素,并认为可以按任意顺序添加元素a、B或C。只有一个元素可以有嵌套的元素。我喜欢这个实现,因为嵌套元素的顺序对我们的数据模型很重要,并且这些元素在系统中的顺序会不同 <A> <B></B> <B></B> <A> <B&g

使用模式和XML文件,我试图创建一个类型为a的元素,它可以包含类型为a、B和C的嵌套元素。元素类型a、B和C都是类型X的扩展。因此我想在类型a元素内部创建一个元素,并认为可以按任意顺序添加元素a、B或C。只有一个元素可以有嵌套的元素。我喜欢这个实现,因为嵌套元素的顺序对我们的数据模型很重要,并且这些元素在系统中的顺序会不同

<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,但这被标记为一个错误。

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

了解更多信息