当前位置: 首页 > 知识库问答 >
问题:

如何使用JAXB从Java中的XSD获取minOccurs/maxOccurs值?

澹台俊达
2023-03-14
[org.xml.sax.SAXParseException: cvc-complex-type.2.4.d: Invalid content was found starting with element 'ns1:TheFooAndBarThing'. 
No child element '{"http://www.myschemanamespace.xyz/v1":BarId}' is expected at this point.]
<xs:complexType name="TheFooAndBarThing">
    <xs:sequence>
        <xs:element name="FooId" minOccurs="1" maxOccurs="1" type="nx:FooIdType"/>
        <xs:element name="BarId" minOccurs="1" maxOccurs="100" type="nx:BarIdType"/>
    </xs:sequence>
</xs:complexType>
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "TheFooAndBarThing", propOrder = {
    "fooId",
    "barId"
})
public class TheFooAndBarThing {

    @XmlElement(name = "FooId", required = true)
    protected String fooId;
    @XmlElement(name = "BarId", required = true)
    protected List<String> barId;

    public String getFooId() {
        return fooId;
    }

    public void setFooId(String value) {
        this.fooId = value;
    }

    public List<String> getBarId() {
        if (barId == null) {
            barId = new ArrayList<String>();
        }
        return this.barId;
    }

}

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

共有1个答案

曾嘉福
2023-03-14

简答:没有容易的办法。

架构派生的类不再引用原始架构。即使使用XSOM之类的东西来解析原始模式,也将无法找到相应的XML模式构造来检查。

解决这个问题的最好方法是编写一个自定义的XJC插件(我写了很多)。

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

  • myType也被定义为complexType。然后得到生成的类MyResponse.java和Reference.java。我可以通过以下方式分配“引用”的值: 而且奏效了。 现在我只是删除了maxOccurs=“unbounded”,它不再起作用了。响应不再是List类型,而是JaxBelement类型。我试着用: 谁能告诉我,当它不是一个列表时,什么是正确的做法?

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

  • 这是我的xml: 我为这个xml使用了JAXB和unMarshall,我可以得到描述和外部密钥。但是我不能得到有价值的属性名称。 > 这是我的java类: 组织JAVA 银行JAVA 如何获取属性名称和值?谢谢你

  • 问题内容: 所以我想有一个列表要用@XmlElements注释,如下所示 我想知道是否有一种方法可以强制列表包含至少1个元素,因为现在,xsd看起来像 问题答案: 假设Apple,Orange和Mango是Fruit的子类,您可能需要注释与XML模式中的替换组相对应的属性,而不是与选择概念相对应的属性。 假设Apple,Orange和Mango类扩展了Fruit类,并带有注释 想要查询更多的信息

  • B/src/main/gen pom.xml 我想在B项目中从XSD生成类,它存在于一个项目中 在B项目的pom.xml中,我有: