Java 声明会导致ObjectFactory中发生冲突

Java 声明会导致ObjectFactory中发生冲突,java,xml,jaxb,Java,Xml,Jaxb,我有两个xsd被导入到主xsd。两者都有相同的元素,但名称空间不同。因此,我为第二个xsd(B.xsd)创建了一个定制绑定。我仍然得到“两个声明导致ObjectFactory类中发生冲突”。据我所知,定制绑定实际上会为默认XML名称到Java标识符映射无法自动处理的情况提供有意义的定制名称。因此,冲突将被避免 A.xsd B.xsd binding.xml <jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"

我有两个xsd被导入到主xsd。两者都有相同的元素,但名称空间不同。因此,我为第二个xsd(B.xsd)创建了一个定制绑定。我仍然得到“两个声明导致ObjectFactory类中发生冲突”。据我所知,定制绑定实际上会为默认XML名称到Java标识符映射无法自动处理的情况提供有意义的定制名称。因此,冲突将被避免

A.xsd


B.xsd


binding.xml

<jaxb:bindings
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
    jaxb:extensionBindingPrefixes="xjc" jaxb:version="2.0">

    <jaxb:bindings
        schemaLocation="./xsd/B.xsd" node="/xs:schema">

        <jaxb:bindings node="//*/xs:element[@name='lotNumber']">
            <jaxb:property name="ucbLotNumber" />
        </jaxb:bindings>

        <jaxb:bindings node="//*/xs:element[@name='itemExpirationDate']">
            <jaxb:property name="ucbItemExpiratonDate" />
        </jaxb:bindings>

    </jaxb:bindings>

</jaxb:bindings>

pom.xml

<plugin>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-xjc-plugin</artifactId>
                <configuration>
                    <extensions>
                        <extension>org.apache.cxf.xjcplugins:cxf-xjc-ts:3.0.3</extension>
                    </extensions>
                </configuration>
                <executions>
                    <execution>
                        <id>Xsd2Java</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>xsdtojava</goal>
                        </goals>
                        <configuration>
                            <sourceRoot>${basedir}/target/generated-sources/cxf</sourceRoot>
                            <xsdOptions>
                                <xsdOption>
                                    <xsd>${basedir}/src/main/resources/xsd/Main.xsd</xsd>
                                    <packagename>abc.def</packagename>
                                    <bindingFile>src/main/resources/binding.xml</bindingFile>
                                    <extension>true</extension>
                                    <extensionArgs>
                                        <arg>-encoding</arg>
                                        <arg>UTF-8</arg>
                                    </extensionArgs>
                                </xsdOption>
                            </xsdOptions>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

org.apache.cxf
cxf xjc插件
org.apache.cxf.xjc插件:cxf-xjc-ts:3.0.3
Xsd2Java
生成源
xsdtojava
${basedir}/target/generated sources/cxf
${basedir}/src/main/resources/xsd/main.xsd
abc.def
src/main/resources/binding.xml
真的
-编码
UTF-8

如果元素中包含complextype,则应向complextype添加name属性

<xs:element name="ilmd">
        <xs:complexType **name="ilmdArray"**>
            <xs:sequence>
                <xs:element ref="lotNumber" minOccurs="0"/>
                <xs:element ref="itemExpirationDate" minOccurs="0"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

如果元素中包含complextype,则应向complextype添加name属性

<xs:element name="ilmd">
        <xs:complexType **name="ilmdArray"**>
            <xs:sequence>
                <xs:element ref="lotNumber" minOccurs="0"/>
                <xs:element ref="itemExpirationDate" minOccurs="0"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>


您找到解决方案了吗?您找到解决方案了吗?
<xs:element name="ilmd">
        <xs:complexType **name="ilmdArray"**>
            <xs:sequence>
                <xs:element ref="lotNumber" minOccurs="0"/>
                <xs:element ref="itemExpirationDate" minOccurs="0"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>