【XML】xml转Freemind思维导图

  1. 通过以下代码可以将xml转换为Freemind软件的思维导图,方便查看各数据结构
  2. 该代码运行需要安装lxml库
pip install lxml
  1. 使用方式示例
python xml2mm.py *.xml *.mm
  1. 转化完成示例,使用Freemind软件打开,该软件在ubuntu的软件商店中即可下载
  2. python代码如下
import sys
from lxml import etree as et
from xml.sax.saxutils import quoteattr


class FreeMindCreator:

    def __init__(self, outfile=sys.stdout):
        self.outfile = outfile
        self.line_counter = 1
        self.mmlines = [
            '<map version="1.0.1">\n',
            "<!-- To view this file, download free mind mapping software FreeMind from http://freemind.sourceforge.net -->\n",
        ]

    def start(self, tag, attrib):
        attrib = " ".join([f"{key}={value}" for key, value in attrib.items()])
        blank, space = "", " "
        mmattr = quoteattr(tag + (space if attrib.strip() else blank) + attrib.strip())
        mmtext = f'<node ID="ID_{self.line_counter}" TEXT={mmattr}>'
        self.mmlines.append(mmtext + "\n")
        self.line_counter += 1

    def end(self, tag):
        self.mmlines.append("</node>\n")

    def data(self, data):
        data = data.strip()
        if data:
            self.mmlines[-1] = self.mmlines[-1][:-3] + " text='" + data + "'\">"

    def close(self):
        self.mmlines.append("</map>")
        with open(self.outfile, "w") as of:
            of.writelines(self.mmlines)


if __name__ == "__main__":
    infile = sys.argv[1]
    outfile = sys.argv[2]
    parser = et.XMLParser(target=FreeMindCreator(outfile))
    print("Parser initialized, Parsing xml...")
    _ = et.parse(infile, parser)
    print(f"Parse complete. Generated {outfile}")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HIT_Vanni

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值