1

つい最近、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;

グラフ インスタンスにデータを入力してマーシャリングしようとすると、特に javax.xml.bind.MarshalException という例外が発生します。

私が理解している限り、この問題は、Vertex クラスが潜在的なループである Vertex ArrayList を格納しているため、JAXB がそれについて不平を言っていることが原因です。私は少しグーグルで調べましたが、これに対する解決策に資金を提供していないようです。

4

1 に答える 1