【发布时间】: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