【问题标题】:JAXB: missing "xsi-type" attribute in unmarshalled XMLJAXB:未编组的 XML 中缺少“xsi-type”属性
【发布时间】:2017-05-29 08:25:59
【问题描述】:

给定一个 XML 和一个相关的生成 xsd 文件,我在使用 JAXB 解组 XML 时遇到问题。

考虑这段代码:

JAXBContext jaxbContext = JAXBContext.newInstance(ObjectFactory.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Envelope envelope = ((JAXBElement<Envelope>) jaxbUnmarshaller.unmarshal(file)).getValue();

xml 文件已正确解组,但我丢失了有关“xsi:type”属性的所有信息。

在生成的类中,没有任何“类型”字段可以匹配该信息。

【问题讨论】:

    标签: java xml jaxb unmarshalling


    【解决方案1】:

    解决方法是在生成的类中加入这两行代码:

    @XmlAttribute(name = "type", namespace = "http://www.w3.org/2001/XMLSchema-instance")
    protected java.lang.String type;
    

    同时添加 getter/setter 方法。

    这样,“xsi:type”属性就被正确读取了。

    【讨论】:

    • 感谢您的回答,但是我无法解析具有 xsi:type 属性的元素的子元素。任何帮助都可能很棒......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多