2012-02-22 78 views
2

我想从标准架构learning object model创建类。模式似乎由于小写类型而中断。有没有什么方法可以在“不区分大小写”模式下使用jaxb生成类?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> 

我有“时间”标签重命名为“customDuration”我有改变的引用以及和它的作品。

谢谢!

+1

你所说的“模式似乎是由于一个小写的类型被打破”的意思。你能否提供(也许简化的)例子,哪些不适合你? – maximdim 2012-02-22 13:40:23

+0

有一种叫做“持续时间”的复杂类型,另一种叫做“持续时间”。 Jaxb显示错误:(与上述错误有关)另一个“持续时间”从此处生成。 – pokeRex110 2012-02-22 13:44:06

回答

2

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

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

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

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

+0

谢谢,我已经完成了这个工作。我想知道为什么Jaxb没有任何情况下的标志,我可以生成两个类:“Duration.java”和“duration.java”。再次感谢 – pokeRex110 2012-02-22 15:20:47

+0

我认为它很复杂,因为这不符合Java代码约定。我几周前开始与JABX合作,并且遇到过像您这样的问题。我觉得很多现有的WSDL没有为JAX-WS做准备 – jddsantaella 2012-02-22 18:59:07

0

这已经回答了,但希望这将帮助另外一个人,用-XautoNameResolution这样,每当遇到有相同的名称(不区分大小写)两个元素新类将会产生。我用它作为以下

XJC -d SRC -p com.sample -wsdl somewsdl.wsdl -XautoNameResolution