我想从标准架构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”,我也更改了引用并且它可以正常工作。
谢谢!
答案 0 :(得分:2)
我认为你应该更改模式以便拥有Duration
和duration_
,生成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