XJC生成的类的问题

时间:2013-12-11 15:01:01

标签: java xml jaxb

我有一个xsd如下

  <xs:element name="package">
     .....
       <xs:element name="package">
        .....
          <xs:element name="package">
            ......
           </xs:element>
        </xs:element>
     </xs:element>

所有三个包都有不同的字段。我正在尝试使用XJC生成类。它给出了内部类的代码,这是compilatin错误,因为它内部具有相同的名称。 我尝试使用bindings.ly绑定文件重命名类

<jaxb:bindings 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
    version="2.1">
    <jaxb:globalBindings/>
    <jaxb:bindings schemaLocation="CoveragesWithIIRolesresponse.xsd">
            <jaxb:bindings node="//xs:element[@name='package']">
                    <jaxb:class name="Fault2"/>
            </jaxb:bindings>
    </jaxb:bindings>
</jaxb:bindings>

说出太多目标节点的错误。如何解决此问题 请帮帮我

更新:如果我将multiple="true"放入我的绑定文件中,则会替换导致相同编译错误的所有位置

1 个答案:

答案 0 :(得分:1)

你认为这是一个很好的xsd设计吗? 也许最好定义一个名为“package”的复杂类型,其中所有字段都标记为选项,并且只使用主元素中的元素引用。 “MainPackage”或者什么

在这种情况下,JaxBinding只为类型“package”创建一个类。

看看Salami Slice或Venetian Blind设计。 这些xsd设计与JaxB非常兼容,因为它们与面向对象的结构及其关联更为相关。

也许另一个解决方案是使用package元素的不同目标命名空间。 在这种情况下,Package类型的限定类名会根据命名空间而更改。但在我看来,这也不是一个好的设计。