2008-12-12 7 views
9

Wie kann man eine unerwartete Elementsituation in JAXB ignorieren und trotzdem alle anderen Arten von javax.xml.bind.UnmarshalException bekommen?Wie ignoriert man unerwartete Element-Situation in JAXB?

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

Beachten Sie, ich möchte immer noch das Obj-Ergebnis des XML-Parsing erhalten.

Antwort

10

Die Lösung.

In JAXB Validation Umsetzung wie folgt:

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

} 

Dann

Unmarshaller u = ...; 

u.setEventHandler(new CustomValidationEventHandler()); 

u.unmarshal(new StringReader(xml)); 
+2

In meinem Fall "if (evt.getMessage(). Enthält (" Unexpected element "))" sollte "sein, wenn (evt.getMessage(). ToLowerCase(). Enthält (" unerwartetes Element "))". Ich weiß nicht warum, aber die Nachricht wird manchmal in Kleinbuchstaben geschrieben. – veysiertekin

+1

Dies funktioniert nicht. Ich bekomme immer noch den gleichen Fehler. –