2016-04-27 4 views
0

Ignorieren eines Knotens, der aufgrund eines ungültigen Werts eine Ausnahme verursacht.
Angenommen, ich String-Wert anstelle von int in XML-Attribute setzen, wie in unten xml
JAXB Ignorieren des Knotens, der während des Zurückmarshalierens eine Ausnahme verursacht

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

in thread "main" java.lang.NumberFormatException

Ausnahme beendet wird

gezeigt: keine Nummer: 1002re

gibt es eine Möglichkeit in jaxb ungültigen valu zu ignorieren Es oder einfach überspringen Sie diesen Knoten und weiter mit der Analyse anderer XML-Knoten.

Antwort

0

Ich denke, Sie könnten dies mit einem XmlAdapter tun. Für eine Einführung, siehe this Blog-Post von der MOXy führenden Entwickler Blaise Doughan.

So sollten Sie den Adapter Implementierung etwas wie dieses:

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 
     } 
    } 
} 

und fügen Sie den Adapter Anmerkung zum id Feld:

@XmlJavaTypeAdapter(NumberFormatIgnoringAdapter.class) 
private Integer id; 
Verwandte Themen