从xsd:choice元素自定义JAXB 2.0生成的方法名称

时间:2010-02-09 13:47:43

标签: java xml jaxb

我正在试图弄清楚如何自定义由JAXB 2.1.12生成的方法名称。我有一个史诗般的XML模式(不在我的控制之下),它包含一个包含一个包含大约200个其他元素的choice元素的组。因此,当我生成JAXB类时,创建的get()方法相当无用 - 最终会出现类似“getElement1AndElement2AndElement3()”的内容。

我想将get()方法重命名为更好的方法,但我无法确切地知道如何做到这一点。我知道在the tutorial中它描述了通过在元素上使用来定制类名。

我发现了一篇非常古老的文章(http://onjava.com/pub/a/onjava/2003/12/10/jaxb.html?page=2),它描述了将“name”属性附加到元素上,这似乎是我需要做的。不幸的是,我认为该文章引用的是1.x JAXB版本,并且name属性在JAXB 2.0的选择元素中不再有效。

那么有人知道如何自定义生成的方法名称吗?如果示例或任何其他信息有用,或者如果我不想做的话,请告诉我。

谢谢!

1 个答案:

答案 0 :(得分:5)

我已尝试使用您提供的链接中显示的示例,并且以下binding.xjb有效:

<jxb:bindings version="1.0"
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
    xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <jxb:bindings>
      <jxb:bindings schemaLocation="po4.xsd" node="/xs:schema/xs:element[@name='Widgets']//xs:complexType//xs:choice">
            <jxb:property name="Shapes"/>
        </jxb:bindings>
    </jxb:bindings>
</jxb:bindings>

我也使用JAXB 2.1.12。

我希望它有所帮助。