JAXB Marshalling - 扩展现有类

标签 jaxb marshalling base-class

我需要使用 JAXB 通过 XML 创建一系列 Java 对象,这些对象都扩展了已经创建的公共(public)基类(不使用 JAXB)。例如,假设我有以下要生成的 JAXB 类:

Penguin.xml  -> Penguin.java
Robin.xml -> Robin.java
Cardinal.xml -> Cardinal.java

我已经有一个名为 Bird.java 的现有基类我希望上面的三个类能够扩展。

做这个的最好方式是什么?

谢谢你的帮助!

最佳答案

这很简单:您需要创建一个包含以下内容的 JAXB 绑定(bind)文件:

<jaxb:bindings version="1.0"
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
    xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
>

    <jaxb:globalBindings>
        <!-- All beans should extend this base class: -->
        <xjc:superClass name="org.mycompany.common.Bird" />
    </jaxb:globalBindings>

</jaxb:bindings>

您可以找到有关此选项(和其他甜蜜的东西)的更多信息 here .

关于JAXB Marshalling - 扩展现有类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9364178/

相关文章:

java - 是否有 JAXB 注释可以执行此操作?

java - 我需要做什么才能接受 web 服务中的数组参数?

java - 如果我不希望将某些变量编码到 XML 文件中怎么办?

java - 获取@XmlAttribute/@XmlValue 需要引用映射到 XML 文本的 Java 类型

java - 使用命名空间生成的 Jaxb cxf-xjc 插件

jaxb - Eclipselink 和 @XmlRef 的问题

c# - 编码结构数组指针的方法

C++ 复制构造函数清除 Derived* 的 vector<Base*>

c# - 派生类不调用基类方法

ruby - 类实例化和初始化(不调用初始化?)