java - 解码、xml 到 java、XSD 中未定义的无效枚举值被忽略

标签 java xml jaxb xsd unmarshalling

我的 XSD 文件仅定义了 5 种类型:

<xs:simpleType name="Types">
        <xs:restriction base="xs:string">
            <xs:enumeration value="TypeA" />
            <xs:enumeration value="TypeB" />
            <xs:enumeration value="TypeC" />
            <xs:enumeration value="TypeD" />
            <xs:enumeration value="TypeE" />
        </xs:restriction>
    </xs:simpleType>

但是假设用户发送了“TypeF”,这不是有效类型,那么使用 jaxb 的 unmarshalling 完全忽略了该值,我想验证该值并向用户发送错误请求异常。 如何确保如果用户在 XML 中放入无效类型,它不会被忽略?

最佳答案

您可以在 Unmarshaller 上指定 ValidationEventHandler 实例,并在 handleEvent 方法上返回 false,以使 JAXB 因无效值而失败。

关于java - 解码、xml 到 java、XSD 中未定义的无效枚举值被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21490230/

相关文章:

java - 防止 eclipselink moxy 转义元素内容

java - JAXB 解码到实体错误

java - JAXB XML 解码只看到根元素

java - 有没有办法自动将 Groovy 转换为 Java?

java - 如何序列化和反序列化hibernate对象?

java - 控制台应用程序中的 Spring Boot 执行器

c# xml serialization 自定义 elementName

c - klish - 动态变量和完成

java - JAXB - 从 XSD 生成类 - 将枚举转换为字符串

java - 如何更改 Netbeans IDE 8.2 中的注释颜色?