JAXB区分大小写的类

时间:2012-02-22 13:09:12

标签: java jaxb standards case-sensitive

我想从标准架构learning object model创建类。由于较小的类型,模式似乎被破坏。有没有办法在“case insensitve”模式下用jaxb生成类?

以下是冲突发生的问题:

<xs:complexType name="Duration">
  <xs:choice minOccurs="0" maxOccurs="unbounded">
     <xs:element name="duration" type="DurationValue"/>
     <xs:element name="description" type="description"/>
     <xs:group ref="ex:customElements"/>
    </xs:choice>
 </xs:complexType> 

<xs:complexType name="duration">
    <xs:complexContent>
      <xs:extension base="Duration">
        <xs:attributeGroup ref="ag:duration"/>
       <xs:attributeGroup ref="ex:customAttributes"/>
     </xs:extension>
    </xs:complexContent>
 </xs:complexType>

我已将“duration”标记重命名为“customDuration”,我也更改了引用并且它可以正常工作。

谢谢!

2 个答案:

答案 0 :(得分:2)

我认为你应该更改模式以便拥有Durationduration_,生成JAXB对象,然后更改生成的JAXB类,以使它们适应原始WSDL。例如,在Java中:

@XmlElement(name = "Duration")
protected String duration;

@XmlElement(name = "duration")
protected String duration_;

(我已经简化了示例中的类型)。无论如何你希望找到更好的解决方案。

答案 1 :(得分:0)

已经回答了这个问题,但希望这会帮助其他人,使用-XautoNameResolution,这样每当遇到两个具有相同名称的元素(不区分大小写)时,就会生成新类。我用它如下

xjc -d src -p com.sample -wsdl somewsdl.wsdl -XautoNameResolution