xmind文件数据解析重构成mindmap可识别数据

这篇具有很好参考价值的文章主要介绍了xmind文件数据解析重构成mindmap可识别数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【需求背景】

  • 测试平台开发中,需要引入前端mindmap模块,进行在线xmind实时解析并前端展示

【卡点难点】

  • 选取什么库进行xmind解析
  • 如何转换成mindmap可以识别的数据

【xmind解析】

  • 直接选用官方xmind-sdk-python,发现已经2018后停止维护了,解析最新版本报无法识别错误,弃用
  • 直接去github上查最新维护的库,发现xmindparser库还可以使用,且方法简便易于上手,以下是内置api
    is_xmind_zen #是否为xmind文件
    xmind_to_dict #解析xmind成为字典
    xmind_to_json #解析xmind成为json
    xmind_to_xml #解析xmind成为xml
    xmind_to_file #解析xmind成为json或xml,其余报错
点击查看代码
import xmindparser
path = r"xxx.xmind"
print(xmindparser.is_xmind_zen(path)) #判断是否xmind文件
print(xmindparser.xmind_to_dict(path)) #解析成字典
print(xmindparser.xmind_to_json(path)) #解析成json
print(xmindparser.xmind_to_xml(path)) #解析成xml
print(xmindparser.xmind_to_file(path,'json')) #解析成json

【转换mindmap数据】

  • 通过查询mindmap的文档,数据与xmind文档解析出来的不一致
    xmind解析数据结构如下:
点击查看代码
[
    {
        "title": "画布 1",
        "topic": {
            "title": "主题",
            "topics": [
                {
                    "title": "子题主",
                    "topics": [
                        {
                            "title": "孙主题",
                            "topics": [
                                {
                                    "title": "孙孙主题",
                                    "topics": [
                                        {
                                            "title": "叶子节点"
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }
            ]
        },
        "structure": "org.xmind.ui.logic.right"
    }
]
而mindmap数据结构如下:
点击查看代码
[
    {
        "name": "主题",
        "children": [
            {
                "name": "子题主",
                "children": [
                    {
                        "name": "孙主题",
                        "children": [
                            {
                                "name": "孙孙主题",
                                "children": [
                                    {
                                        "name": "叶子节点",
                                    }
                                ],
                            }
                        ],
                    }
                ],
            }
        ],
    }
]

【算法思路】

  • 通过观察可知,两者只是key不同,需要title换成name,topics换成children即可

【方案一】
直接暴力replace替换

点击查看代码
data = xmindparser.xmind_to_dict(file)
res = [eval(str(data).replace('title','name').replace('topics','children'))[0]['topic']]
print(res)

【方案二】
由于层级不确定,使用递归更加优雅高级

点击查看代码
data = xmindparser.xmind_to_dict(path)
def recursion(data):
	# 不存在topics则是叶子节点直接返回
	if not data.get('topics',None):
		return {'name':data['title']}
	return {'name':data['title'],'children':[recursion(topic) for topic in data['topics']]}
res = [{'name':i['title'],'children':[recursion(i['topic'])]} for i in data]
print(res)

【总结】
这里利用递归方法解决了一个数据结构重构的算法,最终效果如图。
xmind文件数据解析重构成mindmap可识别数据
——每日进步亿点点,每年钱包鼓点点文章来源地址https://www.toymoban.com/news/detail-706321.html

到了这里,关于xmind文件数据解析重构成mindmap可识别数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【2023Mathorcup大数据】B题 电商零售商家需求预测及库存优化问题 python代码解析

    2023 年MathorCup 高校数学建模挑战赛——大数据竞赛赛道B:电商零售商家需求预测及库存优化问题电商平台存在着上千个商家,他们会将商品货物放在电商配套的仓库,电商平台会对这些货物进行统一管理。通过科学的管理手段和智能决策,大数据智能驱动的供应链可以显著降

    2024年02月08日
    浏览(68)
  • 数据库管理-第111期 Oracle Exadata 02-硬件构成(20231017)

    新开的坑,感觉一般般,还是坚持写下去吧。 这里集合汇总一下之前写过的和Exadata相关的文章: 数据库管理-第三十七期 我搞挂了一台一体机(20220925) 数据库管理-第三十八期 一体机上不了网了(20221010) 数据库管理-第四十三期 水一期(20221113) 数据库管理-第四十九期

    2024年02月08日
    浏览(42)
  • 2023五一杯数学建模B题思路解析 - 快递需求分析问题

    # 1 赛题 B题:快递需求分析问题 网络购物作为一种重要的消费方式,带动着快递服务需求飞速增长,为我国经济发展做出了重要贡献。准确地预测快递运输需求数量对于快递公司布局仓库站点、节约存储成本、规划运输线路等具有重要的意义。附件1、附件2、附件3为国内某快

    2024年02月06日
    浏览(52)
  • [Stable Diffusion教程] 第一课 原理解析+配置需求+应用安装+基本步骤

    本次内容记录来源于B站的一个视频 以下是自己安装过程中整理的问题及解决方法: 问题:stable-diffusion-webui启动No Python at ‘C:xxxxxxpython.exe‘ 解答:打开webui.bat 把 中的%~dp0venv改成自己python的安装路径就行获取直接set值即可 如 修改完之后又遇到如下问题 将python直接卸载掉

    2024年02月11日
    浏览(41)
  • KITTI数据集内参文件解析

     方便展示,做了换行 其中P0~P3是对应的相机投影矩阵,也就是相机的内参 正常情况下相机内参为3X3的矩阵, 在这里为3X4的原因是要把不同位置的相机平面统一到P0相机下 所以额外加了一列的偏移量,P0相机对应位置则为全0 相机内参公式如下: 其中和为像素焦距,单位为像

    2024年02月07日
    浏览(46)
  • 解析xml文件,获取需要的数据并写入txt文件中

    =_=  话不多说!直接上代码!=_= 1、XmlUtil.java     xml解析工具类  2、测试代码 解析xml方式还有很多种,这只是其中一种,可以参考:Java XML解析 - 利用dom(org.w3c.dom)解析XML  

    2024年02月14日
    浏览(39)
  • vs code导入excel文件并且解析excel文件数据

    实习工作需要通过vs code导入excel文件并且解析excel文件数据,学习整理了一下相关方法分享给大家^_^ 要在 VS Code 中导入和解析 Excel 文件,你可以使用一些库和扩展来帮助你完成这个任务。以下是一种常用的方法: 安装必要的库和扩展: 安装  pandas  库:在终端窗口中运行 

    2024年02月03日
    浏览(64)
  • python 数据分析之 HTML文件解析

    HTML 是用来描述网页的一种语言。HTML 是一种在 Web 上使用的通用标记语言。HTML 允许你格式化文本,添加图片,创建链接、输入表单、框架和表格等等,并可将之存为文本文件,浏览器即可读取和显示。 HTML 指的是超文本标记语言: HyperText Markup Language HTML 不是一种编程语言,

    2024年02月16日
    浏览(48)
  • 【数据仓库基础(四)】数据仓库需求:基本需求和数据需求

    从基本需求和数据需求两方面介绍对数据仓库系统的整体要求。 数据仓库中含有机密和敏感的数据。为了能够使用这些数据,必须有适当的授权机制。这意味着只有被授权的用户才能访问数据,这些用户在享有特权的同时,也有责任保证数据的安全。 增加安全特性会 影响到

    2024年02月09日
    浏览(41)
  • React前端解析excel文件,获取excel文件中的数据

    核心 xlsx 相关文档 xlsx库实现纯前端导入导出Excel

    2024年01月23日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包