[英]Serializing a tree structure using JAXB in Java
所以我有一個樹實現了我的自定義樹結構,如下所示:
樹類:
@XmlRootElement
public class Tree {
Set<? extends TreeNode> nodes;
@XmlElement
Set<? extends TreeNode> getNodes() {...}
}
抽象節點:
public abstract class Node {
Set<? extends Node> children;
private String name;
@XmlAttribute
public String getName() {...}
@XmlElement
public abstract Set<? extends Node> getChildren();
}
組(可以包含組和實體):
@XmlRootElement(name = "group")
public class Group extends Node {
private final Set<Group> groups = new HashSet<Group>();
private final Set<Entity> entities = new HashSet<Entity>();
public Set<Group> getGeoups() { ... }
public Set<Entity> getEntities() { ... }
}
節點:
@XmlRootElement(name = "entity")
public class Entity extends Node {
public Set<DashboardNode> getChildren() {
return Collections.<DashboardNode> emptySet();
}
}
我的問題是,JAXB不為組和實體使用不同的名稱。 我想得到類似以下結果:
<tree>
<node>
<group>
<group>
<entity/>
</group>
</group>
</node>
<node>
<group>
<entity/>
</group>
<group>
</group>
<entity/>
</node>
</tree>
我得到這個代替:
<tree>
<node>
<children>
<children>
<children/>
</children>
</children>
</node>
(...)
</tree>
如果我在getChildren()方法上的抽象節點類中刪除了注釋,則僅會顯示以下內容:
<tree>
<node>
</node>
<node>
</node>
</tree>
看一下@XmlElements
批注,將其中合適的一項添加到Node
的children屬性中應該會達到您的期望。
問題是您的組“是”節點。 當序列化程序遇到同時具有“子項”和“組”的對象時,該怎么辦?
最好完全避免繼承Java。
實際上,您在getGeoups()
[sic]或getEntities()
上都沒有@XMLElement
批注...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.