从Xml数据生成图形的工具

9
我想要从大型xml文件中生成图。它实际上是程序执行生成的调用上下文树。一个小文件如下所示:
从这个xml文件中,我想要有一个包含4个节点(每个方法标签一个节点)的图,即main、methodA、methodB和methodC。正如树所显示的(从缩进),main()调用methodA,然后methodA调用methodB和methodC。所以我想要一个像下面这样的图:
有没有开源工具可以为我做到这一点?xml文件非常大(约7 MB),因此图形确实非常庞大。我希望工具能够正确地处理这个问题。如果工具能在Linux上运行,那就很好了,否则在Windows上也可以。但首选是Linux。
我还可以考虑使用Java中的一些好的库来完成这个任务。
谢谢。
1个回答

8
我的建议是yEd - 它不是开源的,但是免费且跨平台(基于Java,在Linux上使用Oracle的JDK非常流畅),并使用开放标准进行输入/输出。它能够可视化排列具有数千个节点的网络,并具有可以读取xml文件的导入工具。 由于将xml文件导入图形结构没有单一的最佳方法,您可以关联一个XSLT文件并将输入转换为GraphML - yEd可以自动将XSLT文件应用于您的xml文件,然后计算出一个漂亮的图形,然后可以进行分析或导出。
这里一些XSL示例样式表的链接,您可以以此为基础。

谢谢您的回复,Sebastian。我已经下载了yED 3.9.2。根据您所说,似乎我只需要将xml文件导入yED中,它就会将其转换为GraphML,然后生成图形。但是我找不到将xml文件导入yED的选项?您能告诉我如何操作吗? - user523956
嗨,Sebastian,我有点不明白你所说的“yEd可以自动将XSLT文件应用于您的xml文件,然后计算出一个漂亮的图形,然后可以进行分析或导出。”你的意思是我应该先将我的xml文件转换为GraphMl,然后再打开那个graphml文件到yED吗?我尝试打开样本graphml文件到yED,但它没有显示出一个正确的图形?你能否请解释一下你的确切意思? - user523956
好的,yED只接受xml格式。我们只需要选择文件-打开并选择文件类型中的xml+xss。图应该会正确显示。我不知道为什么Sebastian要将其转换为GraphML等。感谢Sebastian建议这个好工具。 - user523956
如果您编写自己的XSL文件(除非您的XML很简单,否则可能需要这样做),则XSL需要输出GraphML xml。但是您将看不到此GraphML中间结果,yED最终将解析GraphML。 XML + XSL = GraphML -> yED - Sebastian
当我尝试打开一个1MB的XML文件时,它显示了一个错误,如下所示:“yEd遇到以下错误:java.lang.reflect.InvocationTargetException”,并在显示文件中的图形后。所显示的图形是不完整的。那么你知道如何处理这样的大文件,并且在yED中这个错误实际上意味着什么吗?谢谢。 - user523956
@user523956:我以前没有见过这个错误。你应该联系支持团队——他们肯定会在这种情况下帮助你:yEd支持 - Sebastian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接