jGraphX ​​- импортировать XML и получить его вершины и ребра - PullRequest
1 голос
/ 19 марта 2020

Я пытаюсь импортировать файл 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 объекту, не удается

...