つい最近、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 がそれについて不平を言っていることが原因です。私は少しグーグルで調べましたが、これに対する解決策に資金を提供していないようです。