提问人:const.grigoryev 提问时间:10/6/2022 最后编辑:const.grigoryev 更新时间:10/6/2022 访问量:61
JAXB 不报告非法元素重复
JAXB doesn't report about illegal element duplicate
问:
假设我有一个带注释的 Java 类:
@XmlRootElement
class Person {
public String name;
public int age;
}
应从 XML 文档创建该类的实例。但有时 XML 记录与我的 POJO 不太匹配。例如,它可能有多个标签:<name>
<person>
<name>Dr. Jekyll</name>
<name>Mr. Hyde</name>
<age>35</age>
</person>
在这种情况下,我希望收到来自 unmarshaller 的错误消息。但它实际上只是悄悄地重新初始化了两次属性。有没有办法让 JAXB 通知我这些错误?(类似的东西将是一个完美的解决方案。从属性设置器中抛出异常对我来说看起来太过平板)VerificationErrorHandler
更新。我的 JAXB 设置不出人意料:
var jaxb = JAXBContext.newInstance(Person.class);
var jaxbDecoder = jaxb.createUnmarshaller();
var errorLog = new ArrayList<ValidationEvent>();
jaxbDecoder.setEventHandler(e -> errorLog.add(e));
// Now unmarshal:
var p = (Person) jaxbDecoder.unmarshal(xml);
之后,尽管我的XML文档显然不正确,但它是空的。errorLog
答: 暂无答案
评论
ValidationEventHandler