java - 使用 JAXB 继承(解码)

标签 java xml jaxb

我有许多具有共同属性的实体。没有 xml 模式,所以我自己编写 jaxb 实体。

abstract class SuperEntity {
    protected String id;
    protected String name;

    @XmlElement
    public void setId() { .. sets Id .. }

    @XmlElement
    public void setName() { .. sets name .. }
}

// id and name are null after deserialization .. they are completely ignored
// there are other entities such as this, I don't want to repeat my code
@XmlRootElement
@XmlSeeAlso({SuperEntity.class})
class SpecificEntity extends SuperEntity {
    protected String specificField;

    @XmlElement
    public void setSpecificField() { .. sets specific field .. }
}

SuperEntity 根本没有反序列化(解码),字段为空。如果我将字段和 setter 从父类(super class)复制到特定类,它会起作用,但我不想只将该代码复制到每个子实体。感谢您的帮助。

最佳答案

将类定义更改为

@XmlRootElement
@XmlSeeAlso({SpecificEntity.class})
abstract class SuperEntity {


@XmlRootElement
class SpecificEntity extends SuperEntity {

关于java - 使用 JAXB 继承(解码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21553634/

相关文章:

java - 地理位置权限不足

xml - 从 RDF 到 html 的 XSLT 转换

html - 将文本用于链接,将 XSL 用于 HTML 弹出窗口

java - JAXB - 将 Java 接口(interface)映射到 Web 服务上下文中的第 3 方库实现

java - Java 中的 native 密码掩码符号

java - 打印高于特定值的数组值

java - JAXB - 如何使用 MOXy XPath 提取属性值?

java - 如何解决java.lang.NoClassDefFoundError : javax/xml/bind/JAXBException

java - 在MongoRepository spring中保存选定的字段而不影响其他字段

java - 当 Activity 和/或应用程序关闭时保持广播接收器运行?