如何忽略JAXB中的意外元素情况?

时间:2008-12-12 11:33:56

标签: xml jaxb

如何忽略JAXB中的意外元素情况仍然得到所有其他类型的javax.xml.bind.UnmarshalException?

obj = unmler.unmarshal(new StringReader(xml))

注意我仍然希望得到xml解析的obj结果。

2 个答案:

答案 0 :(得分:11)

解决方案。

在JAXB中实现ValidationEventHandler,如下所示:

class CustomValidationEventHandler implements ValidationEventHandler{

    public boolean handleEvent(ValidationEvent evt) {
        System.out.println("Event Info: "+evt);
        if(evt.getMessage().contains("Unexpected element"))
            return true;
        return false;
    }

}

然后

Unmarshaller u = ...;

u.setEventHandler(new CustomValidationEventHandler());

u.unmarshal(new StringReader(xml));

答案 1 :(得分:4)

此外,JAXB 2.0会自动忽略无法识别的元素并继续解组过程。请参阅https://jaxb.java.net/nonav/jaxb20-fcs/docs/api/javax/xml/bind/Unmarshaller.html并跳转到“验证和良好形成”。

寻找你感兴趣的贴纸↓↓↓
豫ICP备18024241号-1