我正在使用 Jaxb 将 XML 解码为 Java 对象。我需要知道新属性/元素何时在 XML 中并失败。但是默认情况下,解码器会忽略新元素/属性。
当 XML 中存在 POJO 中未指定的新属性/元素时,我可以设置为失败的配置吗?
我的 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);
最佳答案
您需要调用Unmarshaller.setEventHandler()
使无效的 XML 内容失败。
关于java - 在 Jaxb 解码时希望未知属性出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33095314/