用名称空间生成的Jaxb cxf-xjc插件

时间:2019-10-10 15:33:35

标签: java xml jaxb maven-3

我正在使用cfx-xjc-pluging创建一些类。在代码中,我可以创建对象,封送和封送都没问题。

现在,尽管我开始进行肥皂端点的呼叫,但遇到了问题。服务提供者返回的对象没有名称空间,而编组和解组似乎期望它。

构建过程如下:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-xjc-plugin</artifactId>
            <version>${cxf.xjc.plugin.version}</version>
            <executions>
                <execution>
                    <id>xjc</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>xsdtojava</goal>
                    </goals>
                    <configuration>
                        <xsdOptions>
                            <xsdOption>
                                <xsdDir>${basedir}\src\main\resources\xsd\TotalView-06-2019</xsdDir>
                                <bindingFile>${basedir}\src\main\resources\bindings\work.xjb</bindingFile>
                                <packagename>${jax.package.name}</packagename>
                            </xsdOption>
                        </xsdOptions>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

我看到的是生成的package-info.java具有

@javax.xml.bind.annotation.XmlSchema(namespace ="http://xml.place.com/XMLSchema")
package com.code.place.generated;

其中不包括elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED,我认为这是停止使用命名空间所必需的,但这是我第一次深入Java中的xml,并且可能会脱离基础。

有没有一种方法可以阻止Jaxb / cfx-xjc-pluging期望名称空间或在调用服务时将其添加到xml中?

1 个答案:

答案 0 :(得分:0)

这不是解决方案,而是hack。在提供的架构中,我能够将elementFormDefault="unqualified"更改为elementFormDefault="qualified",并且现在封送处理时,这些类不希望使用名称空间。我忍不住认为必须有更好的方法。