代码之家  ›  专栏  ›  技术社区  ›  Pratik

具有两个名称相同但大小写不同的元素的XSD的XJC错误

  •  0
  • Pratik  · 技术社区  · 9 年前

    我有两个元素的xsd:“state”和“state”。当我使用maven-jaxb2-plugin执行XJC时,我得到以下错误:

    <xsd:element name="state" type="xsd:string" minOccurs="0" maxOccurs="1" />
    .
    .
    .
    <xsd:element name="State" type="xsd:string" minOccurs="0" maxOccurs="1" />
    
    SAXParseException2: Two declarations cause a collision in the ObjectFactory class
    

    这是预期的,因为它试图用“ S 状态“to” s “状态”在内部导致与已经存在的“状态”发生冲突。我的问题是,有没有一种方法来维持这种情况?

    注意:我知道首先使用相同的元素名称并不理想,但不幸的是,我无法控制XSD的更改。

    1 回复  |  直到 9 年前
        1
  •  1
  •   lexicore    9 年前

    你为什么不使用 jaxb:class jaxb:factoryMethod 自定义以避免命名冲突?

    类似于:

    <jaxb:bindings node="xs:element[@name='state']">
        <jaxb:factoryMethod name="LowerState"/>
    </jaxb:bindings>