解组,xml到java,忽略了在XSD中未定义的无效枚举值

时间:2014-01-31 21:18:22

标签: 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”不是有效类型,那么unmarshalling使用jaxb完全忽略该值,我想验证此值并向用户发送不良请求异常。 如果用户在XML中放入了无效的类型,我怎么能确保它不会被忽略?

1 个答案:

答案 0 :(得分:0)

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