java - 如何将 JAXB 类实例编码为其父类(super class)

标签 java marshalling jaxb2

是否可以将 JAXB 注释类实例编码为其父类(super class)(这也是一个 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>

如果可能的话,这个 marshal 调用会是什么样子?

最佳答案

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

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

如果您从 XML 模式生成类,还要检查 copyable plugin .您可以将数据从 MoreDetailedBenamningTYPE 实例复制到实例 BenmaningTYPE 并对其进行编码。

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

关于java - 如何将 JAXB 类实例编码为其父类(super class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4264422/

相关文章:

java - Json 仅在特定方法中忽略属性

visual-studio - Visual Studio 2012 上的 Env.DTE 使用有时会引发 MK_E_UNAVAILABLE

java - com.sun.istack.SAXException2 : Instance . .. 正在替换 "java.lang.Object",但是 ... 绑定(bind)到匿名类型

java - 舍入至 2 的最高次方(仅限二元运算)

java - Netty 分块输入流

java - 如何在Android上排列卡片?

c# - 在 32 位和 64 位运行时编码(marshal)结构时的不同行为

c# - 为什么叫编码?

java - JAXB 将绑定(bind)应用于多个 .xsd 架构

java - 如何使用 jaxb 编码集合?