JAXB和complexType共享名称与其中一个元素生成不正确的代码

时间:2012-09-06 10:23:39

标签: java xml maven xsd jaxb

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

<xs:complexType name=”Foo”>
    <xs:sequence minOccurs=”0” maxOccurs=”unbounded”>
        <xs:element name=”Foo”>
        ...
        </xs:element>
    ...
    </xs:sequence>
<xs:complexType>

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

Public class Foo {
...

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

   ...

   public static class Foo {
   ...
   }
}

当然,这无法编译,因为不允许在嵌套类和封闭类上使用相同的名称。如果不更改xsd,我该怎么做才能解决这个问题?我知道你可以通过在xsd中添加jaxb的标签来覆盖名称。这样做安全吗?它会对服务的界面产生影响吗?

1 个答案:

答案 0 :(得分:3)

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