2

只需很少的注释,JAXB 就可以有效地将结构转储到 XML 中。JAXB 的诗意在于不需要创建一些 DTO,或者用样板代码过多地使编组的类混乱。

但经常发生的是,提供数据的方法不是 getter,而是 formatDescription() 甚至 toString() 之类的东西。

如果它只是一个单一的类,这并不重要,因为它可以通过添加 getDescription() 进行子类化。但是当利用 MOXy 的特性来编组接口时,这变得更加困难 - 必须将方法添加到接口中并且所有实现都发生了变化;或接口的子类和所有的实现。

// @XmlElement(name = "desc") // DOESN'T WORK.
String toDescription();

// JAXB needs getter :/
@XmlElement(name = "desc")
String getDescription();

有什么方法可以让 MOXy 接受不以 开头的方法get*

4

1 回答 1

1

我发现MOXy 允许在 XML 文件中使用外部元数据(而不是注释)。Jaxb EclipseLink/MOXy中也有描述:是否可以指定 get/set 方法的名称

所以在这种情况下,我会设置

<xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm"
    package-name="forum8834871">
    <java-types>
        <java-type name="ServerInfo" xml-accessor-type="PUBLIC_MEMBER">
            <xml-root-element/>
            <java-attributes>
                <xml-element name="desc" java-attribute="description" >
                    <xml-access-methods get-method="toDescription"/>
                </xml-element>
            </java-attributes>
        </java-type>
    </java-types>
</xml-bindings>

未经测试,如果我省略set-method.

无论如何 - 这只是一种解决方法,所以我填写了一个功能请求

于 2013-06-07T10:58:29.920 回答