2016-04-27 78 views
0

如何忽略由于无效值而导致异常的节点。
假设我在XML属性放的不是int字符串值,如下所示的XML在
JAXB如何忽略在解组时导致异常的节点

<customer id="1002re"> 
    <name>NameTestContact</name> 
    <contact>902323232</contact> 
</customer> 

计划将与异常终止

异常线程“main” java.lang.NumberFormatException:不是 号:1002re

有JAXB任何方式忽略无效VALU es或简单地跳过该节点并继续解析其他xml节点。

回答

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;