gpt4 book ai didi

java - 在 Java 中使用 JAXB 序列化树结构

转载 作者:行者123 更新时间:2023-11-29 09:09:24 26 4
gpt4 key购买 nike

所以我有一个树实现了我的自定义树结构更像这样:

树类:

@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 - 在 Java 中使用 JAXB 序列化树结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13191577/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com