2010-11-17 69 views
2

我有两个类,Node和Group,Group是Node的子类。如何使用JAXB从一个类生成两个不同的结构xml

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

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

然后Group类

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

我必须定义一个类树包含节点类,这样的名帅后,将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> 

但由于集团继承节点,所以第二个经常产生这样的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无法生成为我想要的。

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

任何建议是值得欢迎的。

在此先感谢。

回答

相关问题