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