gpt4 book ai didi

java - 如何使用 JAXB 编码(marshal)/取消编码(marshal)链接的 Java 对象

转载 作者:行者123 更新时间:2023-12-01 04:42:49 29 4
gpt4 key购买 nike

我最近已经问了一个有关 JAXB 的问题,可以在以下位置找到:How to marshal/unmarshal Java objects with private fields using JAXB .

我当前的问题是我正在尝试编码使用邻接列表结构实现的图结构。

顶点类:

@XmlElement
private int index;
@XmlElementWrapper(name="adj_list")
@XmlElement(name="vertex")
private ArrayList<Vertex> adjList;

边缘类别:

@XmlElement(name="vertex")
private Vertex v1;
@XmlElement(name="vertex")
private Vertex v2;
@XmlElement
private String label;

图表类:

@XmlElementWrapper(name="vertices")
@XmlElement(name="vertex")
private ArrayList<Vertex> vertices;
@XmlElementWrapper(name="edges")
@XmlElement(name="edge")
private ArrayList<Edge> edges;

当我填充图形实例并尝试对其进行编码(marshal)时,我收到异常,特别是 javax.xml.bind.MarshalException。

据我了解,这个问题是由于 Vertex 类存储了一个潜在循环的 Vertex ArrayList 造成的,因此 JAXB 对此有所提示。我在谷歌上搜索了一下,但似乎无法为此提供资金。

最佳答案

如果 XML 中的每个节点都是通过包含关系引用的(例如 @XmlElement),那么您可以使用 @XmlID/@XmlIDREF 使用基于键的关系将树变成图。

关于java - 如何使用 JAXB 编码(marshal)/取消编码(marshal)链接的 Java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16268703/

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