如何检测jaxb中的意外元素

时间:2012-10-30 16:50:19

标签: java xml xsd jaxb

我使用JAXB 2.2.7从我的XML文件中获取数据,问题是我需要检查我的XML文件中是否有一些意外的元素,但是JAXB并不关心并且没有任何错误地完美地工作。

示例:

    <classe> 
  <detail>
        <knowElementFromXSD>value</knowElementFromXSD>
        <unknowElementFromXSD>OtherValue</unknowElementFromXSD>
  </detail>
</classe>

例如,我需要JAXB为此XML文件引发错误,因为未在我的XSD中定义。

如果有人有想法,我在互联网上找不到任何解决方案。

1 个答案:

答案 0 :(得分:3)

有几种不同的方法可以完成您的用例:

选项#1 - ValidationEventHandler

您可以在Unmarshaller上设置ValidationEventHandler,以便收到意外元素之类的通知。默认情况下,JAXB(JSR-222)实现将忽略未映射的元素。

选项#2 - 架构验证

如果在javax.xml.validation.Schema上设置Unmarshaller的实例,那么XML输入将被验证,因为它是未编组的。