2016-04-27 98 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;