Я пытаюсь импортировать файл xml
в объект графа, а затем перебрать его дочерние элементы (вершины && ребра). Я пытаюсь следующее, но у меня не работает
String xml = "<root><mxCell> ...... ";
mxGraph graph = new mxGraph();
Document document = mxUtils.parseXml(xml);
mxCodec codec = new mxCodec(document);
codec.decode(document.getDocumentElement(), graph.getModel());
Object[] cells = graph.getChildCells(graph.getDefaultParent());
//get all cells
for (Object c : cells) {
mxCell cell = (mxCell) c;
if (cell.isVertex()) {
// if is vertex do some things
}
}
Но graph.getChildCells(graph.getDefaultParent())
не возвращает мне никаких ячеек. Есть идеи?
=== РЕДАКТИРОВАТЬ ===
В библиотеке mxgraph Javascript я преобразую тот же xml в объект graph
и перебирая дочерние элементы (вершины и ребра) таким образом,
let doc = mxUtils.parseXml(xml);
let codec = new mxCodec(doc);
codec.decode(doc.documentElement, graph.getModel());
let elt = doc.documentElement.firstChild;
while (elt != null)
{
let cell = codec.decode(elt)
if(cell != undefined){
if(cell.vertex){
//is vertex
}
else{
//is edge
}
graph.addCell(cell);
}
elt = elt.nextSibling;
}
, который отлично работает, я пытаюсь реализовать таким же образом в Java library
следующим образом:
while (elt != null){
mxCell mxCell = (mxCell) codec.decode(elt, graph.getModel());
elt = elt.getNextSibling();
}
но приведение объекта, который codec.decode
производит к mxCell
объекту, не удается