首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用draw.io将XML呈现为图像

使用draw.io将XML呈现为图像
EN

Stack Overflow用户
提问于 2016-02-08 16:07:56
回答 1查看 7.2K关注 0票数 12

我正在尝试以编程方式读取由draw.io (在线流程图/图表创建服务)生成的XML文件。Draw.io是以mxGraph为核心构建的,它最近被外部命名为jgraphx (因此本文中的标记),尽管类名保持不变。

这个StackOverflow帖子展示了如何从文件中读取原始XML数据并将其转换为mxGraph对象,mxGraph Javadocs的这一页描述了如何将mxGraph对象转换为可呈现的图像。

然而,对我来说不幸的是,尽管遵循了这两种指南,“呈现”的图像始终为空,并且抛出了一个IllegalArgumentException (因为图像为空)。我的代码如下:

代码语言:javascript
运行
复制
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对象呈现为当前工作目录中的图像。相反,没有发生任何事情,也没有创建任何图像。

有人经历过这样的事情吗?我是不是忽略了什么?有没有更好的方法来做我想做的事?任何帮助都将不胜感激。

带有示例XML文件的FYI,这是一个烤箱,以防您想自己尝试它。

EN

回答 1

Stack Overflow用户

发布于 2016-02-10 18:00:59

在draw.io支持人员的帮助下,我找到了答案: XML是模糊的,是的,但不是无可挽回的。它是简单的压缩和需要解压。为此:

  1. Base64解码
  2. 充气
  3. URL解码

我找到了这个链接,它完成了上面所有的三个步骤,一下子就实现了:https://jgraph.github.io/drawio-tools/tools/convert.html

一旦我进行了XML解压缩,我的代码就能完美地运行,并生成预期的输出。

参见这里的示例实现:https://github.com/laingsimon/render-diagram/blob/master/drawio-renderer/src/main/java/com/simonlaing/drawiorenderer/models/DiagramDecoder.java

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35274068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档