JAXB - 在编组XML时可以将类包含展平吗?

Alv*_*vis 5 java xml annotations jaxb

说,我有两个班:

@XmlRootElement
class A {
    @XmlElement
    String propertyOfA;
    @XmlElement
    B b;
}

class B {
    @XmlElement
    String propertyOfB;
} 
Run Code Online (Sandbox Code Playgroud)

JAXB返回以相应方式格式化的XML:

<a>
  <propertyOfA>valueA</propertyOfA>
  <b>
    <propertyOfB>valueB</propertyOfB>
  </b>
</a>
Run Code Online (Sandbox Code Playgroud)

我的问题是如何在XML中展平层次结构?所以我有:

<a>
  <propertyOfA>valueA</propertyOfA>
  <propertyOfB>valueB</propertyOfB>
</a>
Run Code Online (Sandbox Code Playgroud)

这可以用注释完成吗?

目前我正在考虑为A创建一种包装类,它将以我希望在XML中看到它们的方式构建字段.有没有更好的办法?

bdo*_*han 4

注意: 我是EclipseLink JAXB (MOXy) 的负责人,也是JAXB 2 (JSR-222)专家组的成员。

您可以使用 MOXy 的@XmlPath扩展来映射此用例:

import java.xml.bind.annotation.*;
import org.eclipse.persistence.oxm.annotations.XmlPath;

@XmlRootElement
class A {
    @XmlElement
    String propertyOfA;

    @XmlPath(".")
    B b;
}
Run Code Online (Sandbox Code Playgroud)

了解更多信息