java - 从 xsd 生成 jaxb 对象时如何使用类自定义来解决冲突

标签 java xsd jaxb ifc

当我在以下 xsd 上运行 xjc -d src/-p com.test IFC2X3.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>
   ....

错误:

parsing a schema...
compiling a schema...
[ERROR] A class/interface with the same name "com.test.IfcCondenserTypeEnum" is already in use. Use a class customization to resolve this conflict.
  line 14912 of file:/media/isuru/Projects/mitrai/bim_exchange/ifc_classes_v2x3/IFC2X3.xsd

[ERROR] (Relevant to above error) another "IfcCondenserTypeEnum" is generated from here.
  line 14902 of file:/media/isuru/Projects/mitrai/bim_exchange/ifc_classes_v2x3/IFC2X3.xsd

我发现了一些与此相关的问题,但没有回答这个问题。我如何按照建议解决此问题 Use a class customization

最佳答案

使用下面的绑定(bind)

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

关于java - 从 xsd 生成 jaxb 对象时如何使用类自定义来解决冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29969057/

相关文章:

php - 在 PHP 中使用 XML-Reader 进行 XML 验证

xml - xsd :all 后的重复元素

java - 如何解决 Jackson 无法处理 JPA bean 中的直接自引用的问题

java以随机时间间隔将项目添加到arraylist

java - 通过网络发送 AVPacket

java - Deeplearning4j 拆分数据集进行测试和训练

java - XSD - 验证该元素引用 XML 文件中的其他元素

java - 如何将视频放入apk中?

java - 如何在 JAXB 中自定义属性名称?

java - 如何将两个不同的对象添加到一个对象中