Я пытаюсь программно прочитать файл XML, сгенерированный draw.io, онлайн-службой создания блок-схем/диаграмм. Draw.io построен с использованием mxGraph в своей основе, который недавно получил внешнее имя jgraphx (отсюда тег в этом посте), хотя имена классов остались прежними.
В этом сообщении StackOverflow показано, как читать необработанные XML-данные из файла и преобразовать его в объект mxGraph, и эта страница документации mxGraph Javadocs описывает как преобразовать объект mxGraph в отображаемое изображение.
Однако, к сожалению для меня, несмотря на то, что я следую обоим руководствам, изображение, которое «рендерится», всегда имеет значение null, и выдается IllegalArgumentException
(поскольку изображение равно null). Мой код выглядит следующим образом:
String xmlFile = "work/test.xml";
String imageFile = "work/test.png";
mxGraph graph = new mxGraph();
try {
Document doc = mxXmlUtils.parseXml(mxUtils.readFile(xmlFile));
mxCodec codec = new mxCodec(doc);
codec.decode(doc.getDocumentElement(), graph.getModel());
} catch (IOException e) {
e.printStackTrace();
}
RenderedImage image = mxCellRenderer.createBufferedImage(graph, null, 1, \\
Color.WHITE, false, null);
try {
ImageIO.write(image, "png", new File(imageFile));
} catch (IOException e) {
e.printStackTrace();
}
Как видите, этот код должен считывать данные XML, создавать объект mxGraph из этих данных, а затем отображать объект mxGraph как изображение в текущем рабочем каталоге. Однако вместо этого ничего не происходит и изображение не создается.
Кто-нибудь когда-нибудь испытывал что-то подобное? Я что-то упускаю из виду? Есть ли лучший способ сделать то, что я пытаюсь сделать? Любая помощь будет оценена по достоинству.
К вашему сведению, вот Pastebin с образцом XML-файла на случай, если вы захотите попробовать его сами.