mxCodec 没有正确解码 xml
mxCodec doesn't decode xml correctly
我在我的 React 应用程序中集成了 mxGraph(mxgraph
npm package),所以当我尝试使用 xml 加载图形时,我在控制台中收到错误消息
TypeError: geo.clone is not a function
与我在单个 html 文件中所做的相同,它正在运行。
我调查了一下,发现react app里面的mxCell
和html不一样
在 HTML 的情况下,填充了 geometry
道具而不是反应(检查下面的屏幕)
有人帮我正确解码 xml 吗?
从单个 HTML 控制台解码 mxCell
: https://monosnap.com/file/yAHAi29zFGFpauqU2RtDcvmfPpZ0YJ
从 React 应用程序控制台解码 mxCell
: https://monosnap.com/file/0XxPwyEracX7hMCnMHckAmI8Rl6OEh
来自 React 组件的源代码:
const graph = new mx.mxGraph(this.automationRef.current)
new mx.mxRubberband(graph);
const xml = '<root>...</root>';
const doc = mx.mxUtils.parseXml(xml);
const codec = new mxCodec(doc);
let elt = doc.documentElement.firstChild;
const cells = [];
while (elt != null){
const cell = codec.decodeCell(elt)
cells.push(cell);
graph.refresh();
elt = elt.nextSibling;
}
graph.addCells(cells);
发现问题。
解决方法如下:
https://github.com/jgraph/mxgraph/issues/301#issuecomment-514284868
引用:
你应该加上
window['mxGraphModel'] = mxGraphModel;
window['mxGeometry'] = mxGeometry;
之前
let doc = mxUtils.parseXml(xml);
let codec = new mxCodec(doc);
codec.decode(doc.documentElement, graph.getModel());'
我发现decode方法解析xml需要windows参数
引用结束
我在我的 React 应用程序中集成了 mxGraph(mxgraph
npm package),所以当我尝试使用 xml 加载图形时,我在控制台中收到错误消息
TypeError: geo.clone is not a function
与我在单个 html 文件中所做的相同,它正在运行。
我调查了一下,发现react app里面的mxCell
和html不一样
在 HTML 的情况下,填充了 geometry
道具而不是反应(检查下面的屏幕)
有人帮我正确解码 xml 吗?
从单个 HTML 控制台解码 mxCell
: https://monosnap.com/file/yAHAi29zFGFpauqU2RtDcvmfPpZ0YJ
从 React 应用程序控制台解码 mxCell
: https://monosnap.com/file/0XxPwyEracX7hMCnMHckAmI8Rl6OEh
来自 React 组件的源代码:
const graph = new mx.mxGraph(this.automationRef.current)
new mx.mxRubberband(graph);
const xml = '<root>...</root>';
const doc = mx.mxUtils.parseXml(xml);
const codec = new mxCodec(doc);
let elt = doc.documentElement.firstChild;
const cells = [];
while (elt != null){
const cell = codec.decodeCell(elt)
cells.push(cell);
graph.refresh();
elt = elt.nextSibling;
}
graph.addCells(cells);
发现问题。 解决方法如下:
https://github.com/jgraph/mxgraph/issues/301#issuecomment-514284868
引用:
你应该加上
window['mxGraphModel'] = mxGraphModel;
window['mxGeometry'] = mxGeometry;
之前
let doc = mxUtils.parseXml(xml);
let codec = new mxCodec(doc);
codec.decode(doc.documentElement, graph.getModel());'
我发现decode方法解析xml需要windows参数
引用结束