gpt4 book ai didi

java - 声明导致 ObjectFactory 中的冲突

转载 作者:太空宇宙 更新时间:2023-11-04 09:49:21 44 4
gpt4 key购买 nike

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

A.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="urn:abc:def:ghi" xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="lotNumber" type="xs:string"/>
<xs:element name="itemExpirationDate" type="xs:date" />

</xs:schema>

B.xsd

<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://abc.def.org/kj/ns"
targetNamespace="http://abc.def.org/kj/ns"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:element name="ilmd">
<xs:complexType>
<xs:sequence>
<xs:element ref="lotNumber" minOccurs="0"/>
<xs:element ref="itemExpirationDate" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="lotNumber" type="xs:string"/>
<xs:element name="itemExpirationDate" type="xs:string"/>
</xs:schema>

绑定(bind).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>

最佳答案

如果元素内部包含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>

关于java - 声明导致 ObjectFactory 中的冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54983035/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com