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

时间:2010-11-24 07:33:47

标签: java marshalling jaxb2

是否可以将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>

如果可能的话,这个编组如何调用?

1 个答案:

答案 0 :(得分:2)

我没有检查过,但我先尝试一下:

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

如果您要从XML Schema生成类,请同时检查copyable plugin。您可以将数据从MoreDetailedBenamningTYPE的实例复制到实例BenmaningTYPE并编组。

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