编程语言
首页 > 编程语言> > java – 如何将JAXB类实例编组为其超类

java – 如何将JAXB类实例编组为其超类

作者:互联网

是否可以将JAXB带注释的类实例编组为其超类(也是一个JAXB注释类)?

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "BenamningTYPE", propOrder = {"benamningId"})
@XmlSeeAlso({MoreDetailedBenamningTYPE.class})
public class BenamningTYPE {
    ...
    @XmlElement(name = "BenamningId", required = true)
    protected IdentifierTYPE benamningId;
    ...
}

和扩展类型:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "MoreDetailedBenamningTYPE", propOrder = {"modifyDetails"})
public class MoreDetailedBenamningTYPE extends BenamningTYPE {
    ...
    @XmlElement(name = "ModifyDetails", required = true)
    protected ModifyDetailsTYPE modifyDetails;
    ...
}

所以,如果这种情况:

BenamningTYPE b = new MoreDetailedBenamningTYPE();
...

然后我想将实例b编组为BenmaningTYPE来获取

<BenmaningTYPE>
    ...
</BenmaningTYPE>

并不是:

<MoreDetailedBenamningTYPE>
    ...
</MoreDetailedBenamningTYPE>

如果可能的话,这个元帅如何调用?

解决方法:

我没有检查过,但我先试试:

new JAXBElement(new QName("BenmaningType"),
    BenManingTYPE.class, moreDetailedBenmaningTYPEInstance)

如果您正在从XML Schema生成类,请同时检查copyable plugin.您可以将MoreDetailedBenamningTYPE实例中的数据复制到实例BenmaningTYPE并封送它.

有更多的可能性,但它们有点复杂.

标签:jaxb2,java,marshalling
来源: https://codeday.me/bug/20191008/1873824.html