我正在使用Jaxb將XML解組爲Java對象。我需要知道XML中的新屬性/元素何時失效。但是,默認情況下,解組器會忽略新的元素/屬性。當Jaxb解組時,希望發現未知屬性錯誤
當POJO中沒有指定的XML中存在新的屬性/元素時,是否可以設置配置失敗?
我的POJO:
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "ROOT")
public class Model {
private A a;
public A getA() {
return a;
}
@XmlElement(name = "A")
public void setA(A a) {
this.a = a;
}
static class A {
String country;
public String getCountry() {
return country;
}
@XmlAttribute(name = "Country")
public void setCountry(String country) {
this.country = country;
}
}
}
代碼來解組:
JAXBContext jaxbContext = JAXBContext.newInstance(Model.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
String sample = "<ROOT>" +
"<A Country=\"0\" NewAttribute=\"0\"></A>" +
"<NEWELEMENT> </NEWELEMENT>" +
"</ROOT>";
InputStream stream = new ByteArrayInputStream(sample.getBytes(StandardCharsets.UTF_8));
Object unmarshal = jaxbUnmarshaller.unmarshal(stream);
謝謝。你知道哪個事件處理程序需要在新屬性上出錯嗎?新元素的DefaultValidationEventHandler錯誤,但不包含屬性。我查看了ValidationEventCollector,但似乎沒有收集任何我感興趣的事件。 – n00b
嘗試創建您自己的並在所有事件(FATAL_ERROR,ERROR,WARNING)上失敗。 – Andreas