我有一个相当大xsd
的文件,我使用org.jvnet.jaxb2.maven2.maven-jaxb2-plugin
. 元素名称都是由下划线分隔的大写字母,例如FOO_BAR_BAZ
. 这导致生成的类的名称很丑陋,例如FOOBARBAZ
. 理想情况下,我希望将其映射到FooBarBaz
. 使用 Elements 扩展定义<jxb:class>
不是一种选择。
有没有一种通用的方法来覆盖 jaxb 如何将元素名称映射到 java 类名称?
对于这个用例,您可以研究创建自定义 XJC 插件来自定义 Java 类名的派生方式。
您可以使用外部绑定声明文件,该.xjb
文件包含类似于以下内容:
<jxb:bindings node="//xs:element[@name='FOO_BAR_BAZ']">
<jxb:class name="FooBarBaz"/>
<jxb:property name="FooBarBaz"/>
</jxb:bindings>
但是对于要生成的所有类,您必须这样做。您可能还必须配置bindingDirectory
maven 插件的属性。