我有这个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的标签来覆盖名称.这样做安全吗?它会对服务的界面产生影响吗?
最佳答案 您可以使用外部绑定文件来自定义生成的类名.有关示例,请参阅:
> JAXB: How to change XJC-generated classes names when attr type is specified in XSD?