简体   繁体   English

在 MxGraph 编辑器中打开 .drawio 文件

[英]Open .drawio file in MxGraph Editor

How to open a .drawio XML file into MxGraph ?如何将.drawio XML 文件打开到MxGraph 中

In MxGraph we can import an XML file.在 MxGraph 中,我们可以导入一个 XML 文件。 But the structure of the .drawio file and MxGraph file are completely different, although both are XML.但是.drawio文件和MxGraph文件的结构完全不同,虽然都是XML。

Yeah, Finally i found the way that how open draw io xml file in mxGraph.是的,最后我找到了如何在 mxGraph 中打开 draw io xml 文件的方法。 Before open we need to convert the draw io xml file into mxgraph xml file.在打开之前,我们需要将 draw io xml 文件转换为 mxgraph xml 文件。 Here using a decode function to convert draw io xml file into mxgraph xml file.这里使用解码函数将绘制的 io xml 文件转换为 mxgraph xml 文件。 Can use this decode method inside the xml call function.可以在 xml 调用函数内部使用这种解码方法。

Decode(data) {解码(数据){

    function bytesToString(arr) {
        var str = "";
        for (var i = 0; i < arr.length; i++) {
            str += String.fromCharCode(arr[i]);
        }
        return str;
    }
    function parseXml(xml) {
        if (window.DOMParser) {
            var parser = new DOMParser();
            return parser.parseFromString(xml, "text/xml");
        } else {
            var result = createXmlDocument();
            result.async = "false";
            result.loadXML(xml);
            return result;
        }
    }
    function getTextContent(node) {
        return node != null
            ? node[node.textContent === undefined
                    ? "text"
                    : "textContent"]
            : "";
    }
    try {
        var node = parseXml(data).documentElement;
        if (node != null && node.nodeName === "mxfile") {
            var diagrams = node.getElementsByTagName("diagram");
            if (diagrams.length > 0) {
                data = getTextContent(diagrams[0]);
            }
            data = atob(data);
            data = bytesToString(Pako.inflateRaw(data));
            data = decodeURIComponent(data);
        }
    } catch (e) {
        return;
    }
    if (data.length > 0) {
        this.LoadGraph("", this.SelectGraphCell, data);
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM