Java 如何使用类定制来解决从xsd生成jaxb对象时的冲突

Java 如何使用类定制来解决从xsd生成jaxb对象时的冲突,java,xsd,jaxb,ifc,Java,Xsd,Jaxb,Ifc,当我在下面的xsd上运行xjc-dsrc/-pcom.testifc2x3.xsd命令时,它给出了冲突 .... <xs:element name="IfcCondenserTypeEnum" nillable="true"> <xs:complexType> <xs:simpleContent> <xs:extension base="ifc:IfcCondenserTypeEnu

当我在下面的xsd上运行
xjc-dsrc/-pcom.testifc2x3.xsd
命令时,它给出了冲突

....
<xs:element name="IfcCondenserTypeEnum" nillable="true">
        <xs:complexType>
            <xs:simpleContent>
                <xs:extension base="ifc:IfcCondenserTypeEnum">
                    <xs:attributeGroup ref="ex:instanceAttributes">
                    </xs:attributeGroup>
                </xs:extension>
            </xs:simpleContent>
        </xs:complexType>
    </xs:element>

    <xs:simpleType name="IfcCondenserTypeEnum">
        <xs:restriction base="xs:string">
            <xs:enumeration value="watercooledshelltube">
            </xs:enumeration>
            <xs:enumeration value="watercooledshellcoil">
            </xs:enumeration>
            <xs:enumeration value="watercooledtubeintube">
            </xs:enumeration>
            <xs:enumeration value="watercooledbrazedplate">
            </xs:enumeration>
            <xs:enumeration value="aircooled">
            </xs:enumeration>
            <xs:enumeration value="evaporativecooled">
            </xs:enumeration>
            <xs:enumeration value="userdefined">
            </xs:enumeration>
            <xs:enumeration value="notdefined">
            </xs:enumeration>
        </xs:restriction>
    </xs:simpleType>
   ....
我发现了一些关于这个的问题,但它没有回答这个问题。如何按照建议解决此问题
使用类自定义

使用下面的绑定

<bindings version="2.0" xmlns="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" xmlns:annox="http://annox.dev.java.net"
    xmlns:namespace="http://jaxb2-commons.dev.java.net/namespace-prefix">
    <bindings schemaLocation="../schema.xsd">

        <bindings node="//xs:schema//xs:element[@name='IfcCondenserTypeEnum']">
            <class name="CondenserType" />
        </bindings>

    </bindings>
</bindings>

您可以使用-autonamesolution


例如,您可以调用
wsdl2java-frontendjaxws21-impl-server-d../java-autonamesolution-pcom.yourClasshttps://webservice.xxxx.com.tr/Sms.asmx?wsdl

我也面临类似的问题。但我有大约20-30个这样的变量。还有其他解决方案吗?@wib:创建一个一次性的XSLT转换样式表可以为您创建这些绑定,这很简单。使用绑定和模式文件,而不是本地文件,我指向xsd的url,在绑定中,我只为一个元素定义了绑定,它正在工作。他要求xjc,而不是wsdl2java。这一问题也在近5年前得到了回答和解决。
<bindings version="2.0" xmlns="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" xmlns:annox="http://annox.dev.java.net"
    xmlns:namespace="http://jaxb2-commons.dev.java.net/namespace-prefix">
    <bindings schemaLocation="../schema.xsd">

        <bindings node="//xs:schema//xs:element[@name='IfcCondenserTypeEnum']">
            <class name="CondenserType" />
        </bindings>

    </bindings>
</bindings>