XJC:为complexTypes生成子包

时间:2014-10-07 10:00:49

标签: java ant jaxb xsd xjc

是否可以在使用XJC2Task生成Javaclasses时为每个complexType生成额外的子包?

我有一个问题从xsd生成我有一个名为Traveler的complexType,它有一个名为“ElementNumber”的元素。

但也有一个名为TravellerElementNumber的complexType。

生成i时收到错误“两个声明导致ObjectFactory类中的冲突。

有没有办法在不更改xsd的情况下修复此问题?

最诚挚的问候,

性病

1 个答案:

答案 0 :(得分:0)

不,您无法为复杂类型OOTB生成子包。

是的,您可以在不更改架构的情况下修复它。使用jaxb:factoryMethod绑定元素。

Example

<jaxb:bindings version="1.0" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <jaxb:bindings 
        schemaLocation="ogc/gml/3.1.1/base/feature.xsd" 
        node="/xs:schema">
        <jaxb:bindings node="xs:element[@name='_FeatureCollection']">
            <jaxb:factoryMethod name="AFeatureCollectionElement"/>
        </jaxb:bindings>
    </jaxb:bindings>
</jaxb:bindings>

您必须将绑定指向您遇到冲突的其中一个元素。别忘了包含绑定文件(参见this example)。

相关问题