【问题标题】:How to generate two different structure xml from one class using JAXB如何使用 JAXB 从一个类生成两个不同的结构 xml
【发布时间】:2010-11-17 03:54:50
【问题描述】:

我有两个类,Node 和 Group,Group 是 Node 的子类。

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

    protected int id;
    protected List<Node> children;
}

然后是组类

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Group", propOrder = {
    "name"
})
public class Group extends Node{
   protected String name;
}

我已经定义了一个类 Tree 来包含 Node 类,所以在 marshal 之后,xml 将是

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

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

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

但是因为Group继承了Node,所以第二个总是这样生成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>

即使它们是继承相关的,我应该如何将两个不同的类处理为不同的 xml 文件。 我需要该对象来处理具有当前继承设计的事物。所以继承的不能删除。

如果我将 @XmlTransient 添加到 Node 的 children 属性,第二个 xml 将是我想要的,但第一个 xml 无法生成我想要的。

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

欢迎提出任何建议。

提前致谢。

【问题讨论】:

    标签: jaxb


    【解决方案1】:

    通过利用EclipseLink JAXB (MOXy) 中的扩展,您可以为一个对象模型提供多个 XML 表示。此扩展允许您通过 XML 表示提供额外的映射。欲了解更多信息,请参阅:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-02
      相关资源
      最近更新 更多