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

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

   ...  ...   

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

 Public class Foo { ... public List getFoo() { ... } ... public static class Foo { ... } } 

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

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

  • JAXB:如何在XSD中指定attr类型时更改XJC生成的类名?