java Jaxb解组不会因缺少属性而失败
我有一个用jaxb注释的类,我想将解组器配置为在缺少属性时使解组失败
比方说,我有一个下面的类,如果xml中缺少EventId属性,我希望解组失败,但它被设置为null
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "event")
public class Event {
@XmlAttribute(name = "EventId", required="true")
private Integer eventId;
...
}
解组代码:
JAXBContext jaxbContext = JAXBContextFactory.createContext(new Class[]{Events.class}, null);
StringReader xml = new StringReader(data);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
unmarshaller.setEventHandler(new DefaultValidationEventHandler());
unmarshaller.unmarshal(xml);
我错过什么了吗?如果缺少“必需”属性,我是否应该以某种方式将解组器配置为失败
谢谢
# 1 楼答案
通过提供一个模式:https://docs.oracle.com/javase/8/docs/api/javax/xml/bind/Unmarshaller.html#setSchema-javax.xml.validation.Schema-,可以在解组之前验证XML文档