如何在 JAXB 中使用 XSD 验证枚举值?minOccurs = "0"
如果设置了错误的值但缺少值是好的( ),我想抛出一个错误。
问问题
1362 次
2 回答
1
它可以使用 XML Schema 中的类型限制和枚举来完成。有关一些文档,请参阅此链接
看一个代表性别的示例类型。
<xsd:simpleType name="gender">
<xsd:restriction base="xs:string">
<xsd:enumeration value="M"/>
<xsd:enumeration value="F"/>
</xsd:restriction>
JAXB 将生成这样的枚举:
@XmlType(name = "gender")
@XmlEnum
public enum Gender {
M,
F;
public String value() {
return name();
}
public static Gender fromValue(String v) {
return valueOf(v);
}
}
并相应地验证您的输入。如果你minOccurs="0"
在这样的类型的元素上使用,你应该得到你想要的。
于 2012-06-30T07:52:35.380 回答
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);
于 2012-06-30T08:51:51.413 回答