如何从xsd编辑生成的java类

时间:2012-11-01 08:54:56

标签: java jaxb

我正在使用maven-jaxb2-plugin从xsd创建java类。在xsd中,我定义了两种状态:Status1和Status2。这两个类有很多类似的变量。因为我无法编辑xsd是否有选项在我的项目中创建类Status,然后添加更改生成的类来扩展此类?

实施例

现在:

Class Status1 {...}

Class Status2 {...}
  • 这是由maven-jaxb2-plugin
  • 生成的

我想要的是什么:

Class Status1 extends Status {...}

Class Status2 extends Status {...}
  • 这是由maven-jaxb2-plugin
  • 生成的

Class Status {...} - 我自己的班级

我希望这可以通过绑定来完成,但我不知道如何

更新:

第二个选项如何实现这个问题就是将类Status1添加到新变量中。这可能吗?

我想要的是什么:

Class Status1 {... NewVariable newVariable ...}

Class Status2 {...}
  • 这是由maven-jaxb2-plugin
  • 生成的

2 个答案:

答案 0 :(得分:1)

好的我找到了: 我使用extend:

<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    jaxb:version="2.1" xmlns:inheritance="http://jaxb2-commons.dev.java.net/basic/inheritance"
    jaxb:extensionBindingPrefixes="inheritance">
    <jaxb:bindings schemaLocation="mySchema.xsd">
        <jaxb:bindings node="xsd:complexType[@name='StatusType']">
            <inheritance:extends>my.package.Status1</inheritance:extends>
        </jaxb:bindings>
    </jaxb:bindings>
</jaxb:bindings>

在JAXB2插件中我需要添加:

                    <extension>true</extension>
                    <args>
                        <arg>-Xinheritance</arg>
                    </args>
                    <plugins>
                        <plugin>
                            <groupId>org.jvnet.jaxb2_commons</groupId>
                            <artifactId>jaxb2-basics</artifactId>
                            <version>0.6.4</version>
                        </plugin>
                    </plugins>

答案 1 :(得分:0)

问题的第一部分见Specifying Super Class of a JAXB-Generated Class

第二部分见Generate additional custom method with jaxb-xjc。 这是关于添加自定义方法。但自定义字段处理应该类似。