Как загрузить xml в диаграмму draw.io?

Как прочитать файл xml, чтобы нарисовать график.

моя строка кода ниже для получения XML-данных, подобных этой. Мне нужно все данные XML в var doc object для рисования фигуры на диаграмме

var doc = mxUtils.parseXml(STYLE_PATH+'/Test.xml');

полный код ниже:

mxUtils.getAll([bundle, STYLE_PATH + '/default.xml'], function (xhr) {
                    // Adds bundle text to resources
                    mxResources.parse(xhr[0].getText());

                    // Configures the default graph theme
                    var themes = new Object();
                    themes[Graph.prototype.defaultThemeName] = xhr[1].getDocumentElement();
                    // Main
                    new EditorUi(new Editor(urlParams['chrome'] == '0', themes));
                    var ui = new EditorUi(new Editor());                
                    var doc = mxUtils.parseXml(STYLE_PATH+'/Test.xml');
                    ui.editor.setGraphXml(doc.documentElement);
                }, 

                    function () {
                        document.body.innerHTML = '<center style="margin-top:10%;">Error loading resource files. Please check browser console.</center>';
                    });

person Sajith    schedule 13.06.2019    source источник


Ответы (2)


mxUtils.parseXml() ожидайте, что вы передадите ему строку xml, а не путь к файлу. Поэтому вам нужно загрузить этот файл в строку и передать его в parseXml.

person Godric    schedule 13.06.2019
comment
У меня нет строки XML, у меня есть единственный путь XML, как это сделать? Помогите мне, пожалуйста. - person Sajith; 13.06.2019

Решил проблему, теперь работает для меня.

var ui = new EditorUi(new Editor());
var xml_file_path = STYLE_PATH + '/Test.xml';

            var req = mxUtils.get(xml_file_path, mxUtils.bind(this, function (req) {
                if (req.request.status >= 200 && req.request.status <= 299) {
                    if (req.request.response.length > 0) {
                        editorUi.editor.graph.model.beginUpdate();
                        try {
                            var xmlElem = mxUtils.parseXml(req.request.response).documentElement;
                            editorUi.editor.setGraphXml(xmlElem);

                        }
                        catch (e) {
                            console.error(e);
                        }
                        finally {
                            editorUi.editor.graph.model.endUpdate();
                        }
                    }
                }
            }));
person Sajith    schedule 13.06.2019