如何忽略因无效值而导致异常的节点
假设我在xml属性中放入字符串值而不是int,如下面的xml
<customer id="1002re">
<name>NameTestContact</name>
<contact>902323232</contact>
</customer>
程序将以例外
终止线程“main”中的异常java.lang.NumberFormatException:不是 号码:1002re
Jaxb 中是否有任何方法可以忽略无效值,或者只是跳过该节点并继续解析其他xml节点。
答案 0 :(得分:0)
我认为你可以用XmlAdapter
做到这一点。有关介绍,请参阅MOXy首席开发人员Blaise Doughan的this博客文章。
所以你有这样的适配器实现:
public final class NumberFormatIgnoringAdapter extends XmlAdapter<String, Integer> {
@Override
public String marshal(Integer arg0) throws Exception {
return arg0.toString();
}
@Override
public Integer unmarshal(String arg0) throws Exception {
try {
return Integer.parseInt(arg0);
}
catch (NumberFormatException e) {
return -1; // or whatever you'd like to set invalid input to
}
}
}
并将适配器注释添加到id
字段:
@XmlJavaTypeAdapter(NumberFormatIgnoringAdapter.class)
private Integer id;