使用Python操作xmind文件

by:授客QQ:1033553122

测试环境

Win10

Python 3.5.4

XMind-1.2.0.tar.gz

下载地址:

创建及更新xmind文件

#!/usr/bin/env python

# -*- coding:utf-8 -*-

importxmind

fromxmind.core.const importTOPIC_DETACHED

fromxmind.core.markerref importMarkerId

fromxmind.core.topic importTopicElement

#加载已有xmind文件,如果不存在,则新建

workbook = xmind.load('D:\\example\\example.xmind')

first_sheet = workbook.getPrimarySheet() #获取第一个画布

first_sheet.setTitle('First Sheet') #设置画布名称

root_topic1 = first_sheet.getRootTopic() #获取画布中心主题,默认创建画布时会新建一个空白中心主题

root_topic1.setTitle('Example Topic') #设置主题名称

sub_topic1 = root_topic1.addSubTopic() #创建子主题,并设置名称

sub_topic1.setTitle("first sub topic")

sub_topic2 = root_topic1.addSubTopic()

sub_topic2.setTitle("second sub topic")

sub_topic3 = root_topic1.addSubTopic()

sub_topic3.setTitle("third sub topic")

#除了新建子主题,还可以创建自由主题(注意:只有中心主题支持创建自由主题)

detached_topic1 = root_topic1.addSubTopic(topics_type=TOPIC_DETACHED)

detached_topic1.setTitle("detached topic")

detached_topic1.setPosition(0, 30)

#创建一个子主题的子主题

sub_topic1_1 = sub_topic1.addSubTopic()

sub_topic1_1.setTitle("I'm a sub topic too")

second_sheet = workbook.createSheet() #创建新画布

second_sheet.setTitle('Second Sheet')

root_topic2 = second_sheet.getRootTopic()

root_topic2.setTitle('Root Node')

#使用其它方式创建子主题元素

topic1 = TopicElement(ownerWorkbook=workbook)

topic1.setTopicHyperlink(first_sheet.getID()) #为画布创建一个来自第一个画布的主题链接

topic1.setTitle("redirection to the first sheet")

topic2 = TopicElement(ownerWorkbook=workbook)

topic2.setTitle("topic with an url hyperlink")

topic2.setURLHyperlink("https://www.cnblogs.com/shouke") #为子主题元素设置URL超链接

topic3 = TopicElement(ownerWorkbook=workbook)

topic3.setTitle("third node")

topic3.setPlainNotes("notes for this topic") #为子主题设置备注(F4 in XMind)

topic3.setTitle("topic with\nnotes")

topic4 = TopicElement(ownerWorkbook=workbook)

topic4.setFileHyperlink("d:\\example\demo.jpg") #为子主题元素设置文件超链接

topic4.setTitle("topic with a file")

topic1_1 = TopicElement(ownerWorkbook=workbook)

topic1_1.setTitle("sub topic")

topic1_1.addLabel("a label") #为子主题添加标签(official XMind only can a one label)

#添加子主题到非中心主题

topic1.addSubTopic(topic1_1)

topic1_1_1 = TopicElement(ownerWorkbook=workbook)

topic1_1_1.setTitle("topic can add multiple markers")

#为主题添加标记

topic1_1_1.addMarker(MarkerId.starBlue)

topic1_1_1.addMarker(MarkerId.flagGreen)

#为子主题添加子主题

topic1_1.addSubTopic(topic1_1_1)

topic2_1 = TopicElement(ownerWorkbook=workbook)

topic2_1.setTitle("topic can add multiple comments")

#为主题添加评论

topic2_1.addComment("I'm a comment!")

topic2_1.addComment(content="Hello comment!", author='devin')

topic2.addSubTopic(topic2_1)

#添加子主题元素到中心主题

root_topic2.addSubTopic(topic1)

root_topic2.addSubTopic(topic2)

root_topic2.addSubTopic(topic3)

root_topic2.addSubTopic(topic4)

#遍历子主题

topics = root_topic2.getSubTopics()

forindex, topic inenumerate(topics):

topic.addMarker("priority-"+ str(index + 1)) #为主题添加标记(优先级图标)

#为子主题1和子主题2创建关系

second_sheet.createRelationship(topic1.getID(), topic2.getID(), "relationship test")

# xmind.save(workbook) #保存并覆盖原始文件

#仅保存content.xml

# xmind.save(workbook=workbook, path="d:\\example\\other.xmind", only_content=True) #不改动原始文件,另存为其它xmind文件

#仅保存content.xml、comments.xml、styles.xml

# xmind.save(workbook=workbook, path="d:\\example\\other.xmind", except_revisions=True) #不改动原始文件,另存为其它xmind文件

#保存所有东西,Revisions除外,以节省空间(推荐)

# xmind.save(workbook=workbook, path="d:\\example\\other.xmind", except_revisions=True) #不改动原始文件,另存为其它xmind文件

#保存所有内容,并且另存为其它xmind文件(推荐)

xmind.save(workbook=workbook, path='d:\\example\\other.xmind') #不改动原始文件,另存为其它xmind文件,等同xmind.save(workbook, 'd:\\example\\exam.xmind')

运行结果

解析xmind文件

#!/usr/bin/env python

# -*- coding:utf-8 -*-

importjson

importxmind

importpipes

defdict_to_prettify_json(data):

print(json.dumps(data, indent=4, separators=(',', ': ')))

defcustom_parse_xmind(workbook):

elements = {}

def_echo(tag, element, indent=0):

title = element.getTitle()

elements[element.getID()] = title

print('\t'* indent, tag, ':', pipes.quote(title))

defdump_sheet(sheet):

root_topic = sheet.getRootTopic()

_echo('RootTopic', root_topic, 1)

fortopic inroot_topic.getSubTopics() or[]:

_echo('AttachedSubTopic', topic, 2)

fortopic inroot_topic.getSubTopics(xmind.core.const.TOPIC_DETACHED) or[]:

_echo('DetachedSubtopic', topic, 2)

forrel insheet.getRelationships():

id1, id2 = rel.getEnd1ID(), rel.getEnd2ID()

print('Relationship: [%s] --> [%s]'% (elements.get(id1), elements.get(id2)))

#遍历画布

forsheet inworkbook.getSheets():

_echo('Sheet', sheet)

dump_sheet(sheet)

#加载已有xmind文件,如果不存在,则新建

workbook = xmind.load('D:\\example\\example.xmind')

print(workbook.getData()) #获取整个xmind数据(字典的形式)

dict_to_prettify_json(workbook.getData())

#获取某个画布的数据(字典的形式)

first_sheet = workbook.getPrimarySheet()

dict_to_prettify_json(first_sheet.getData())

#获取某个主题数据(字典的形式)

root_topic = first_sheet.getRootTopic()

dict_to_prettify_json(root_topic.getData())

#获取评论数据

commentsbook = workbook.commentsbook

print(commentsbook.getData())

#自定义解析

custom_parse_xmind(workbook)

作者:授客

本文版权归原作者所有,仅供学习参考之用,转载请注明出处:https://www.cnblogs.com/shouke/p/12685235.html,未经作者允许请务必保留此段声明!

原文链接:https://www.cnblogs.com/shouke/p/12685235.html

python实现xmind_Python 使用Python操作xmind文件相关推荐

  1. Python实例篇:这样操作PDF文件一点都不枯燥了

    前言 大家好,我是辣条 之前辣条有发布过我们常用的两个技能点,今天第三个技能点(PDF)他来了 <Python实例篇:自动操作Excel文件(既简单又特别实用)> <Python技巧 ...

  2. Python的with open读写操作后最好加上close才保险

    Python的教科书说with open的方式灵活好用,而且不需要写关闭文件的语句,系统会自动关闭文件,因此with open比file open更受青睐. 今天遇到一个坑:在Python使用with ...

  3. 使用ITEXT操作PDF文件

    2019独角兽企业重金招聘Python工程师标准>>> 使用ITEXT操作PDF文件 pom.xml <dependency><groupId>com.ite ...

  4. 神操作 用 Python 操作 xmind 绘制思维导图

    在平时的工作中当我们要总结一些知识的时候就需要一款工具来画画流程图,这里推荐 XMind 软件,用 Xmind 绘制的思维导图看起来思路清晰,那么今天的文章介绍关于思维导图的相关知识以及用 Pytho ...

  5. 神操作!用 Python 操作 xmind 绘制思维导图!

    来源:Python 技术 在平时的工作中当我们要总结一些知识的时候就需要一款工具来画画流程图,这里推荐 XMind 软件,用 Xmind 绘制的思维导图看起来思路清晰,那么今天的文章介绍关于思维导图的 ...

  6. python xmind 包使用 (其中解决导出的xmind文件 xmind8可以打开 xmind2020及之后版本打开报错问题)

    pip install xmind 使用 場景 xmind8 可以打开 xmind2020 报错 main_fest.xml(xmind8 打开另存后 更改后缀为.zip 里边包含META-INF/m ...

  7. python中csv文件操作_python中操作csv文件

    python中操作csv文件 读取csv improt csv f = csv.reader(open("文件路径","r")) for i in f: pri ...

  8. Python操作Zip文件

    Python操作Zip文件 需要使用到zipfile模块 读取Zip文件 随便一个zip文件,我这里用了bb.zip,就是一个文件夹bb,里面有个文件aa.txt.

  9. python中io.textio_Python文件读写概述(IO操作、文件读写、stringiobytesio、序列化),python,的,小,总结,StringIOBytesIO...

    IO操作 在进行文件的读写之前,需要说明几点.首先,运行的程序和读取的数据都会在内存中缓存. 进入到 程序或数据 内存 其次,用python程序进行文件的读写,需要创建一个小工具–文件流,用来处理数据 ...

最新文章

  1. 计算机视觉(CV)的算法有哪些,具体都有哪些特点?
  2. 实用ExtJS教程100例-004:等待对话框Ext.MessageBox.wait
  3. 96. (GO)不同的二叉搜索树
  4. linux创建表空间 没有权限,Linux oracle数据库创建表空间、用户并赋予权限
  5. mybatis更新时间字段_你以为把Mybatis型处理器了解了,就不会“暴雷”了!
  6. 博客园博客开通了,庆贺一下
  7. Android新的menu实现——ActionMode
  8. Cannot attach the file as database 'membership'.
  9. tomcat容器启动
  10. Java接口和抽象类区别
  11. 网络安全实验2 信息搜集与主机发现
  12. 东芝300D粉盒清零
  13. 机器学习在社会科学中的应用
  14. 「技术选型」Solr与ES难以抉择?且看第一回
  15. matlab 设计数字滤波器,基于Matlab的FIR数字滤波器设计
  16. EfficientDet介绍
  17. android glide缺少方法,android - 无法膨胀且找不到类android支持设计的行为BottomSheetBehavior - 堆栈内存溢出...
  18. 腾讯云数据库SaaS致力于构建数据库分布式云,为更多更广的用户提供服务
  19. linux下/proc/pid/maps和pmap命令详解
  20. Tomcat的启动与停止

热门文章

  1. 【ESXi中的群晖存储空间扩容】
  2. 抖音电商主播运营带货话术脚本策划方案流程计划表格
  3. 数据重塑_Google是否会重塑电话
  4. python 日志输出为json格式文件_Py修行路 python基础 (二十一)logging日志模块 json序列化 正则表达式(re)...
  5. 什么是5G(漫画解释)
  6. dd命令 skip 和 seek参数理解
  7. PyTorch1.12 亮点一览 | DataPipe + TorchArrow 新的数据加载与处理范式
  8. python中lis的意思_Python语言入门(二)
  9. 设置Chrome忽略网站证书错误
  10. 使用 Vue 和 Electron 开发一款简单的 Markdown 编辑器