当前位置: 首页 > 面试题库 >

JAXB @XmlElements具有minOccurs = 1

韩烈
2023-03-14
问题内容

所以我想有一个列表要用@XmlElements注释,如下所示

@XmlElements(
        {
            @XmlElement(name = "Apple", type = Apple.class),
            @XmlElement(name = "Orange", type = Orange.class),
            @XmlElement(name = "Mango", type = Mango.class)
        }
)
public List<Fruit> getEntries() {
        return fruitList;
}

我想知道是否有一种方法可以强制列表包含至少1个元素,因为现在,xsd看起来像

<xs:complexType name="fruitList">
    <xs:sequence>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="Apple" type="tns:apple"/>
        <xs:element name="Orange" type="tns:orange"/>
        <xs:element name="Mango" type="tns:mango"/>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

问题答案:

假设Apple,Orange和Mango是Fruit的子类,您可能需要注释entries@XmlElementRefXML模式中的替换组相对应的属性,而不是@XmlElements与选择概念相对应的属性。

@XmlElementRef
public List<Fruit> getEntries() {
        return fruitList;
}

假设Apple,Orange和Mango类扩展了Fruit类,并带有注释 @XmlRootElement

@XmlRootElement
public class Apple extends Fruit {
   ...
}

想要查询更多的信息

  • http://bdoughan.blogspot.com/2010/11/jaxb-and-inheritance-using-substitution.html
  • http://bdoughan.blogspot.com/2010/10/jaxb-and-xsd-choice-xmlelements.html


 类似资料:
  • 是否有可能有一个使用值 AND 元素呈现的 JAXB 元素? 我正在尝试渲染类似下面的内容: 它甚至可能不是有效的XML,但不幸的是,我试图渲染的东西需要它,而不是可选的。 如果有一个值和元素,则会给出一个。

  • 问题内容: 我有一个Animal类和一个名为AnimalExtension的Animal扩展。 这两个类之间的唯一区别是AnimalExtension还有另一个实例变量叫做animalId。Animal没有此实例变量。 我也有自己的数据类型,想要对XML进行封送处理。此数据类型称为AnimalList。在AnimalList内,有一个Animals列表作为实例变量。 animalList可以包含A

  • 我在xsd模式中有不同的复杂类型,我使用Jaxb在java类上展示了这一点。我以这种方式在javaclass中展示了成功复杂类型枚举: 但我不能在java生成的类中表达这种限制 minOccurs="0"和maxLlong value="15"都播种在生成的java类中。 有人能帮我吗?三硝基二甲苯

  • 我尝试使用thajaxb来整理xml,我使用xjc命令从xsd文件order.xsd生成java类 我得到了许多带注释的类,但没有一个@XmlRootElement(name="Order"),也没有名为Order的类

  • minOccurs=“0”和maxLength value=“15”都被植入到生成的java类中。 有人能帮我吗?TNX

  • 所以我的问题是: 如何将XSD中的maxOccurs/minOccurss值导入Java代码,以便在构建元素列表时将其用作max/min值?