2

我正在使用 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 生成的
4

2 回答 2

1

好的,我找到了:我使用扩展:

<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>
于 2012-11-05T09:12:00.800 回答
0

对于问题的第一部分,请参阅Specifying Super Class of a JAXB-Generated Class

对于第二部分,请参阅使用 jaxb-xjc 生成其他自定义方法。这是关于添加自定义方法。但是自定义字段处理应该是相似的。

于 2012-11-01T12:14:13.160 回答