我有一个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"
放入我的绑定文件中,则会替换导致相同编译错误的所有位置
答案 0 :(得分:1)
你认为这是一个很好的xsd设计吗? 也许最好定义一个名为“package”的复杂类型,其中所有字段都标记为选项,并且只使用主元素中的元素引用。 “MainPackage”或者什么
在这种情况下,JaxBinding只为类型“package”创建一个类。
看看Salami Slice或Venetian Blind设计。 这些xsd设计与JaxB非常兼容,因为它们与面向对象的结构及其关联更为相关。
也许另一个解决方案是使用package元素的不同目标命名空间。 在这种情况下,Package类型的限定类名会根据命名空间而更改。但在我看来,这也不是一个好的设计。