【问题标题】:generally change JaxB class name mapping一般更改 JaxB 类名映射
【发布时间】:2014-07-04 14:34:40
【问题描述】:

我有一个相当大的xsd,我使用org.jvnet.jaxb2.maven2.maven-jaxb2-plugin 从中生成JaxB 类。元素名称都是由下划线分隔的大写字母,例如FOO_BAR_BAZ。这导致生成的类的名称很丑陋,例如FOOBARBAZ。理想情况下,我希望它映射到FooBarBaz。使用<jxb:class> 元素扩展定义不是一种选择。

是否有一种通用的方法来覆盖 jaxb 将元素名称映射到 java 类名称的方式?

【问题讨论】:

    标签: java xml maven jaxb generated


    【解决方案1】:

    对于这个用例,您可以研究创建自定义 XJC 插件来自定义 Java 类名的派生方式。

    【讨论】:

    • 这看起来很有希望。我希望有人已经遇到过这样的问题并且确实做到了。
    【解决方案2】:

    您可以使用外部绑定声明文件,即 .xjb 文件,其中包含类似以下内容:

    <jxb:bindings node="//xs:element[@name='FOO_BAR_BAZ']">
        <jxb:class name="FooBarBaz"/>
        <jxb:property name="FooBarBaz"/>
    </jxb:bindings>
    

    但是您必须这样做才能生成所有类。您可能还必须配置 maven 插件的 bindingDirectory 属性。

    【讨论】:

    • 定义可能会发生变化,所以我需要一个通用的解决方案。此外,元素的数量会使这个解决方案不切实际。
    猜你喜欢
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 2012-04-14
    • 1970-01-01
    • 2011-03-27
    相关资源
    最近更新 更多