【发布时间】:2016-03-31 08:18:46
【问题描述】:
我经常遇到需要将 XML 文件转换为树形图的情况。可以是我想要可视化的产品目录结构或托管对象模型。
只是想知道是否有人可以推荐一个接受 XML(或其他基于文本的输入)并生成此类图表的工具?我当然可以使用 awk (etc) 脚本将我的 XML 文件转换为几乎任何格式,因此它可以是 CSV 输入或几乎任何基于文本的文件。
干杯! 山姆
【问题讨论】:
我经常遇到需要将 XML 文件转换为树形图的情况。可以是我想要可视化的产品目录结构或托管对象模型。
只是想知道是否有人可以推荐一个接受 XML(或其他基于文本的输入)并生成此类图表的工具?我当然可以使用 awk (etc) 脚本将我的 XML 文件转换为几乎任何格式,因此它可以是 CSV 输入或几乎任何基于文本的文件。
干杯! 山姆
【问题讨论】:
xmlstarlet el -u whatever.xml|awk -F'/' 'BEGIN{print "digraph{"}{print $(NF-1)" -> "$NF}END{print"}"}'|dot -Tpng -o xml.png
display xml.png
嘿!
成功了!
我希望您使用比我更小的 xml 文件。
xmlstarlet 解析 xml,
el 选项将 xml 元素显示为简单的 xpath-u 标志消除了多余的兄弟元素
还有其他许多选项和改进
例如,包括值或属性。awk 打印出 dot 标头,
然后对于文件中的每一行,
使用箭头分隔符打印每个 xpath 的最后两个元素
这对应于 ... err, nigh-DAG
中的节点之间的边
采用dot 格式。
请注意,如果不进行特殊处理,这会导致任何根节点上出现自身边缘。awk 最后将右大括号打印为页脚。
dot,
它是 GraphViz 库的一部分,
读取格式awk 已将xmlstarlet 输出转换为
并被告知要写出一张 png 图片
可以用任何东西查看
注意:graphviz/dot 和 xmlstarlet 都有很多选项
可能找到使用的 xml 文件 here (23 KB)
【讨论】: