Xml JAXB枚举验证
如何在JAXB中使用XSD验证枚举值?如果设置了错误的值,但缺少的值是正确的(Xml JAXB枚举验证,xml,validation,enums,xsd,jaxb,Xml,Validation,Enums,Xsd,Jaxb,如何在JAXB中使用XSD验证枚举值?如果设置了错误的值,但缺少的值是正确的(minOccurs=“0”),我想抛出一个错误。可以使用XML模式中的类型限制和枚举来完成。有关详细信息,请参阅此链接 请看一个表示性别的示例类型 <xsd:simpleType name="gender"> <xsd:restriction base="xs:string"> <xsd:enumeration value="M"/> <xsd:enumeratio
minOccurs=“0”
),我想抛出一个错误。可以使用XML模式中的类型限制和枚举来完成。有关详细信息,请参阅此链接
请看一个表示性别的示例类型
<xsd:simpleType name="gender">
<xsd:restriction base="xs:string">
<xsd:enumeration value="M"/>
<xsd:enumeration value="F"/>
</xsd:restriction>
并相应地验证您的输入。如果对此类类型的元素使用
minOccurs=“0”
,您应该可以得到所需的内容。可以使用XML模式中的类型限制和枚举来完成。有关详细信息,请参阅此链接
请看一个表示性别的示例类型
<xsd:simpleType name="gender">
<xsd:restriction base="xs:string">
<xsd:enumeration value="M"/>
<xsd:enumeration value="F"/>
</xsd:restriction>
并相应地验证您的输入。如果对这样类型的元素使用minOccurs=“0”
,应该可以得到所需的结果。解决方案:
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = sf.newSchema(this.getClass().getClassLoader().getResource("XSD FILE UNDER WEB-INF/classes"));
unmarshaller.setSchema(schema);
解决方案:
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = sf.newSchema(this.getClass().getClassLoader().getResource("XSD FILE UNDER WEB-INF/classes"));
unmarshaller.setSchema(schema);
好的,但是JAXB为坏值将枚举值设置为null,所以我看不出未设置值和坏值之间的区别。@nerd,我看我没能理解你问题的要点。与其说是枚举本身,不如说是在解组文档之前如何执行XML验证。我建议合并我们的答案或删除我的答案,并更改问题标题,以使其他人更容易找到解决方案。好的,但JAXB将枚举值设置为空表示错误值,因此我看不出未设置值和错误值之间的区别。@nerd,我看我没能理解你问题的要点。与其说是枚举本身,不如说是在解组文档之前如何执行XML验证。我建议合并我们的答案或删除我的答案,并更改问题标题,以使其他人更容易找到解决方案。