具有相同名称的嵌套元素的JAXB绑定

时间:2015-01-06 22:18:08

标签: binding jaxb

我有一个给我的模式(所以我无法对其进行更改),我正在尝试为它生成JAXB对象,并且由于具有相同的嵌套元素而导致命名冲突名称。  我创建了bindings.xml以避免命名冲突,并且当我有两级嵌套时它工作正常(例如XPath是这样的:

/A/Value/B/Value

所以这样的事情解决了这个问题:

<jaxb:bindings
     node="/xsd:schema/xsd:complexType[@name='A']
        /xsd:complexType/xsd:sequence/xsd:element[@name='Value']
        /xsd:complexType/xsd:sequence/xsd:element[@name='B']
        /xsd:complexType/xsd:sequence/xsd:element[@name='Value']">
        <jaxb:class name="InnerValue" />
   </jaxb:bindings> 

但现在我有三级嵌套:

/A/Value/B/Value/C/Value 

并且我不知道如何定义绑定(我是否需要其中两个)以避免编译错误。

任何帮助非常感谢

1 个答案:

答案 0 :(得分:0)

我认为您必须自定义复杂类型,而不是元素。所以将绑定附加到相应的xs:complexType。是的,您可能需要其中两个用于内部BC类。我将它们命名为A_BA_B_C,就像那样。

另见jaxb:globalBindings/@localScoping='topLevel',可能有用。