嗨,我正在对以下图表进行反序列化:
<grafo>
<nodo id="1">
<child id="2"/>
</nodo>
<nodo id="2">
<child id="3"/>
<child id="4"/>
</nodo>
<nodo id="3">
<child id="4"/>
</nodo>
<nodo id="4">
<child id="1"/>
</nodo>
我需要将子节点与图表列表中其他节点的引用链接起来,这意味着在解组过程中我不能只创建一个新节点并将它的 id 设置为给我读者的属性,我需要它与图上已经存在的节点共享它的属性,以便能够做到这一点,我在 GraphConverter 类中尝试使用以下函数:
public Object unmarshal(HierarchicalStreamReader reader,UnmarshallingContext arg1) {
Grafo graph= new Grafo();
ArrayList<ArrayList<String>> handlechilds= new ArrayList<ArrayList<String>>();
while (reader.hasMoreChildren())
{
reader.moveDown();
Nodo node= new Nodo(reader.getAttribute("id"));
graph.nodos.add(node);
reader.moveDown();
//reader.getAttribute("id") ->> this just gives me the value of the fisrt node but not the anothers!!
reader.moveUp();
reader.moveUp();
}
return graph;
}
我正在考虑保存边的值并在另一个中添加引用以迭代图形,但我意识到当读者只返回一个孩子时,我需要所有这些。