我有两个类,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类,所以在编组之后,xml将是
<tree>
<children>
<id>1</id>
<children>
<id>2</id>
</children>
<children>
<id>3</id>
</children>
</children>
</tree>
还有另一个类组包含数组中的所有组,所以我希望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不能生成我想要的那个。
我现在很困惑,不知道怎么做。
欢迎提出任何建议。
提前致谢。
答案 0 :(得分:1)
通过利用EclipseLink JAXB (MOXy)中的扩展,您可以为对象模型提供多个XML表示。此扩展允许您通过XML表示提供其他映射。有关更多信息,请参阅: