希望在 Jaxb 解组时出现未知属性错误

n00*_*00b 6 java xml jaxb

我正在使用 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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

解组代码:

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);
Run Code Online (Sandbox Code Playgroud)

And*_*eas 6

您需要调用Unmarshaller.setEventHandler()以使无效的 XML 内容失败。