【问题标题】:JAXB Marshalling - extending an existing classJAXB Marshalling - 扩展现有类
【发布时间】:2012-03-10 23:21:56
【问题描述】:

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

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

我已经有一个名为Bird.java 的现有基类,我希望对上面的三个类进行扩展。

最好的方法是什么?

感谢您的帮助!

【问题讨论】:

    标签: jaxb marshalling base-class


    【解决方案1】:

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

    <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 了解有关此选项(以及其他有趣的事情)的更多信息。

    【讨论】:

    • 有没有办法指定女巫类扩展鸟类。如果我只希望 Robin 和 Cardinal 扩展 Bird 类怎么办?
    • +1 如果您收到错误消息:“在严格模式下不允许供应商扩展绑定 (jaxb:extensionBindingPrefixes)。”你应该使用 -extension,如果在 maven pom 中使用:-extension...in maven-jaxb2-plugin
    • @Chobicus:你的问题的答案是here,特别是你需要激活Inheritance plugin
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多