如何使用JAXB从一个类生成两个不同结构的xml

如何使用JAXB从一个类生成两个不同结构的xml,jaxb,Jaxb,我有两个类,节点和组,组是节点的子类 @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "Node", propOrder = { "id", "children" }) public class Node { protected int id; protected List<Node> children; } 我已经定义了一个类树来包含节点类,所以在封送处理之后,xml将 <tree

我有两个类,节点和组,组是节点的子类

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Node", propOrder = {
    "id",
    "children"
})
public class Node {

    protected int id;
    protected List<Node> children;
}
我已经定义了一个类树来包含节点类,所以在封送处理之后,xml将

<tree>
  <children>
    <id>1</id>
    <children>
        <id>2</id>
    </children>
    <children>
        <id>3</id>
    </children>
  </children>
</tree>

1.
2.
3.
还有另一个类Groups包含数组中的所有组,所以我希望xml应该是

<groups>
  <groups>
    <name>group-1</name>
  </groups>
  <groups>
    <name>group-2</name>
  </groups>
  <groups>
    <name>group-3</name>
  </groups>
</groups>

第一组
第2组
第三组
但是因为组继承了节点,所以第二个组总是生成这样的xml

<groups>
  <groups>
    <id>group-1</id>
    <name>group-1</name>
    <children>
      <id>2</id>
      <name>group-2</name>
    </children>
    <children>
      <id>3</id>
      <name>group-3</name>
    </children>
  <groups>
<groups>

第一组
第一组
2.
第2组
3.
第三组
我应该如何将这两个不同的类处理为不同的xml文件,即使它们是继承相关的。 我需要对象来处理当前继承的设计。因此,无法删除继承的

如果我向节点的children属性添加@xmltransive,则第二个xml将是我想要的xml,但第一个xml无法生成为我想要的xml

我现在很困惑,不知道怎么做

欢迎提出任何建议


提前感谢。

通过利用中的扩展,可以为对象模型提供多个XML表示。此扩展允许您通过XML表示提供其他映射。有关更多信息,请参阅:

<groups>
  <groups>
    <id>group-1</id>
    <name>group-1</name>
    <children>
      <id>2</id>
      <name>group-2</name>
    </children>
    <children>
      <id>3</id>
      <name>group-3</name>
    </children>
  <groups>
<groups>