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

Jaxb cxf-xjc pluggin generated with namespace

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

现在虽然我开始调用 soap 端点并且 运行 遇到了问题。从服务提供者返回的对象没有名称空间,而编组和解组似乎期望它。

构建是这样的:

<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?

好吧,这算不上是解决方案,更像是一种 hack。在提供的架构中,我能够将 elementFormDefault="unqualified" 更改为 elementFormDefault="qualified" 并且 类 现在编组时不期望名称空间。我忍不住认为必须有更好的方法。