Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在特定元素的jaxb生成期间继承超类?_Java_Xml_Maven_Inheritance_Jaxb - Fatal编程技术网

Java 如何在特定元素的jaxb生成期间继承超类?

Java 如何在特定元素的jaxb生成期间继承超类?,java,xml,maven,inheritance,jaxb,Java,Xml,Maven,Inheritance,Jaxb,我有以下xsd模式,并希望生成的文件从超类扩展: <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="myRequest"> <xs:complexType> ... </xs:complexType>

我有以下
xsd
模式,并希望生成的文件从超类扩展:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="myRequest">
        <xs:complexType>
            ...
        </xs:complexType>
    </xs:element>
</xs:schema>
public class MyMessage {
    private String sessionID;
    //getter, setter
}

mvn生成源的结果
:该类未被继承。但我没有错。为什么?

您可以使用JAXB2继承插件(它允许实现接口或类的扩展)


它需要根据处于全局绑定之下,但是xsd中的任何元素都将获得超类。我只想要一个特定的
xs:element[@name='myRequest']
。是的。但是,正如文档所述,它需要在全局绑定中。我不认为你每节课都能做到。这真的是个坏消息,但也许你是对的,这是不可能的。
<plugin>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-xjc-plugin</artifactId>
        <configuration>
              <extensions>
                <extension>org.apache.cxf.xjcplugins:cxf-xjc-ts:${maven.cxf-xjc-ts.plugin}</extension>
                <extension>org.jvnet.jaxb2_commons:jaxb2-basics:0.11.0</extension>
              </extensions>
            </configuration>
        <executions>
            <execution>
                <id>generate-sources</id>
                <phase>generate-sources</phase>

                <!-- Global configuration for all xsd autogenerated resources. default ws location is: src/main/resources/xsd -->
                <configuration>
                    <sourceRoot>${project.build.directory}/generated/src/main/java</sourceRoot>
                    <xsdOptions>
                    <xsdOption>
                    <xsdDir>${project.basedir}/src/main/resources/xsd</xsdDir>
                    <bindingFile>${project.basedir}/src/main/resources/my-binding.xml</bindingFile>
                    <extensionArgs>
                        <extensionArg>-mark-generated</extensionArg>
                        <extensionArg>-Xts</extensionArg>
                        <extensionArg>-extension</extensionArg>
                        <extensionArg>-Xinheritance</extensionArg>
                    </extensionArgs>
                </xsdOption>

                <dependencies>
                    <dependency>
                        <groupId>org.jvnet.jaxb2_commons</groupId>
                        <artifactId>jaxb2-basics-runtime</artifactId>
                        <version>0.11.0</version>
                    </dependency>
                </dependencies>
            </configuration>
            <goals>
                <goal>xsdtojava</goal>
            </goals>
        </execution>
    </executions>
</plugin>
public class MyMessage {
    private String sessionID;
    //getter, setter
}