MxCodec 解码功能不适用于 XML

我正在使用 Angular7 和 MxGraph 库在 javascript 中开发一个应用程序。我可以使用以下代码将 MxGraph 模型保存到 XML 中:


var enc = new mx.mxCodec(mx.mxUtils.createXmlDocument());

var node = enc.encode(editor.graph.getModel());

this.xml = mx.mxUtils.getPrettyXml(node);

但是我无法按照 API 指示对其进行解码。我还尝试粘贴 XML 并尝试解码它,但没有成功,如下所示:


// Usually I would do this:

// var doc = mx.mxUtils.parseXml(this.xml);


// Just for testing purposes I did this

var doc = mx.mxUtils.parseXml(

           '<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/>'+

           '<Node0 label="Input" style="container" id="input"><mxCell style="container" vertex="1" connectable="0" parent="1">'+

           '<mxGeometry y="20" width="100" height="580" as="geometry"/></mxCell></Node0>'+

           '</root></mxGraphModel>');


var dec = new mx.mxCodec(doc);

dec.decode(doc.documentElement, graph.getModel());

console.log(graph.getModel());

在返回的模型中没有Node0.


汪汪一只猫
浏览 286回答 1
1回答

临摹微笑

我很抱歉回答我自己的回复,但我终于在这里找到了一个线索: 当 mxGraph 用作 npm 模块时,没有创建编辑器将这些行添加到我的代码中解决了这个问题:// Workaround because window['mxGraphModel'] is not definedwindow['mxEditor'] = mx.mxEditor;window['mxGeometry'] = mx.mxGeometry;window['mxDefaultKeyHandler'] = mx.mxDefaultKeyHandler;window['mxDefaultPopupMenu'] = mx.mxDefaultPopupMenu;window['mxGraph'] = mx.mxGraph;window['mxCell'] = mx.mxCell;window['mxCellPath'] = mx.mxCellPath;window['mxGraph'] = mx.mxGraph;window['mxStylesheet'] = mx.mxStylesheet;window['mxDefaultToolbar'] = mx.mxDefaultToolbar;window['mxGraphModel'] = mx.mxGraphModel;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript