JAXB和complexType与元素之一共享名称会生成错误的代码

Mar*_*ius 5 java xml xsd jaxb maven

我有这个xsd,有点不好,但是我必须使用它来避免更改正在编写的servlet的接口。请求-响应接口的xsd包含以下几行:

<xs:complexType name=”Foo”>
    <xs:sequence minOccurs=”0” maxOccurs=”unbounded”>
        <xs:element name=”Foo”>
        ...
        </xs:element>
    ...
    </xs:sequence>
<xs:complexType>
Run Code Online (Sandbox Code Playgroud)

注意名称冲突。当我使用maven-jaxb-plugin从该模式生成类时,我最终得到:

Public class Foo {
...

   public List<Foo.Foo> getFoo() {
   ...
   }

   ...

   public static class Foo {
   ...
   }
}
Run Code Online (Sandbox Code Playgroud)

当然,由于不允许在嵌套类和封闭类上使用相同的名称,因此无法编译。在不更改xsd的情况下该如何解决?我知道您可以通过在xsd中为jaxb添加标签来覆盖名称。这样安全吗?会对服务的接口产生影响吗?

bdo*_*han 3

您可以使用外部绑定文件来自定义生成的类名称。示例请参见: