xml - ejemplo - jaxbunmarshaller
¿Cómo ignorar la situación de elementos inesperados en JAXB? (2)
¿Cómo se puede ignorar la situación de elementos inesperados en JAXB ans y obtener todo el otro tipo de javax.xml.bind.UnmarshalException?
obj = unmler.unmarshal(new StringReader(xml))
Observe que todavía quiero obtener el resultado obj del análisis xml.
La solución.
En JAXB, la implementación de ValidationEventHandler es así:
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;
}
}
Entonces
Unmarshaller u = ...;
u.setEventHandler(new CustomValidationEventHandler());
u.unmarshal(new StringReader(xml));
Además, JAXB 2.0 automáticamente ignora los elementos no reconocidos y continúa el proceso de descalificación. Consulte https://jaxb.java.net/nonav/jaxb20-fcs/docs/api/javax/xml/bind/Unmarshaller.html y vaya a "Validación y buena formación".