# XMind
![mind_mapping](https://raw.githubusercontent.com/zhuifengshen/xmind/master/images/xmind.png)
**[XMind](https://github.com/zhuifengshen/xmind)** 是基于 Python 实现,提供了对 [XMind思维导图](https://www.xmind.cn/)进行创建、解析、更新的一站式解决方案!
### 一、安装方式
```
pip3 install XMind
or
pip3 install xmind
```
### 二、版本升级
```
pip3 install -U XMind
```
### 三、使用方式
#### 1、创建XMind文件
```
def gen_my_xmind_file():
# 1、如果指定的XMind文件存在,则加载,否则创建一个新的
workbook = xmind.load("my.xmind")
# 2、获取第一个画布(Sheet),默认新建一个XMind文件时,自动创建一个空白的画布
sheet1 = workbook.getPrimarySheet()
# 对第一个画布进行设计完善,具体参照下一个函数
design_sheet1(sheet1)
# 3、创建第二个画布
gen_sheet2(workbook, sheet1)
# 4、保存(如果指定path参数,另存为该文件名)
xmind.save(workbook, path='test.xmind')
```
![first sheet](https://raw.githubusercontent.com/zhuifengshen/xmind/master/images/first_sheet.png)
```
def design_sheet1(sheet1):
# ***** 第一个画布 *****
sheet1.setTitle("first sheet") # 设置画布名称
# 获取画布的中心主题,默认创建画布时会新建一个空白中心主题
root_topic1 = sheet1.getRootTopic()
root_topic1.setTitle("root node") # 设置主题名称
# 创建一个子主题,并设置其名称
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")
sub_topic4 = root_topic1.addSubTopic()
sub_topic4.setTitle("fourth 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](https://raw.githubusercontent.com/zhuifengshen/xmind/master/images/second_sheet.png)
```
def gen_sheet2(workbook, sheet1):
# ***** 设计第二个画布 *****
sheet2 = workbook.createSheet()
sheet2.setTitle("second sheet")
# 获取画布的中心主题
root_topic2 = sheet2.getRootTopic()
root_topic2.setTitle("root node")
# 使用另外一种方法创建子主题
topic1 = TopicElement(ownerWorkbook=workbook)
# 给子主题添加一个主题间超链接,通过指定目标主题ID即可,这里链接到第一个画布
topic1.setTopicHyperlink(sheet1.getID())
topic1.setTitle("redirection to the first sheet")
topic2 = TopicElement(ownerWorkbook=workbook)
topic2.setTitle("topic with an url hyperlink")
# 给子主题添加一个URL超链接
topic2.setURLHyperlink("https://github.com/zhuifengshen/xmind")
topic3 = TopicElement(ownerWorkbook=workbook)
topic3.setTitle("third node")
# 给子主题添加一个备注(快捷键F4)
topic3.setPlainNotes("notes for this topic")
topic3.setTitle("topic with \n notes")
topic4 = TopicElement(ownerWorkbook=workbook)
# 给子主题添加一个文件超链接
topic4.setFileHyperlink("logo.png")
topic4.setTitle("topic with a file")
topic1_1 = TopicElement(ownerWorkbook=workbook)
topic1_1.setTitle("sub topic")
# 给子主题添加一个标签(目前XMind软件仅支持添加一个,快捷键)
topic1_1.addLabel("a label")
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)
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')
# 将创建好的子主题添加到其父主题下
root_topic2.addSubTopic(topic1)
root_topic2.addSubTopic(topic2)
root_topic2.addSubTopic(topic3)
root_topic2.addSubTopic(topic4)
topic1.addSubTopic(topic1_1)
topic2.addSubTopic(topic2_1)
topic1_1.addSubTopic(topic1_1_1)
# 给中心主题下的每个子主题添加一个优先级图标
topics = root_topic2.getSubTopics()
for index, topic in enumerate(topics):
topic.addMarker("priority-" + str(index + 1))
# 添加一个主题与主题之间的联系
sheet2.createRelationship(topic1.getID(), topic2.getID(), "relationship test")
```
具体代码参考:[create_xmind.py](https://github.com/zhuifengshen/xmind/blob/master/example/create_xmind.py)
#### 2、解析XMind文件
##### (1) 将XMind文件转换为Dict数据 / JSON数据
```
import xmind
workbook = xmind.load('demo.xmind')
print(workbook.getData())
print(workbook.to_prettify_json())
Output:
[ # 画布列表
{ # 第1个画布数据
"id": "2cc3b068922063a81a20029655", # 画布ID
"title": "first sheet", # 画布名称
"topic": { # 中心主题
"id": "2cc3b06892206f95288e487b6c", # 主题ID
"link": null, # 超链接信息
"title": "root node", # 主题名称
"note": null, # 备注信息
"label": null, # 便签信息
"comment": null, # 批注(评论)信息
"markers": [], # 图标列表
"topics": [ # 子主题列表
{
"id": "2cc3b06892206c816e1cb55ddc", # 子主题ID
"link": null,
"title": "first sub topic",
"note": null,
"label": null,
"comment": null,
"markers": [],
"topics": [ # 子主题下的子主题列表
{
"id": "b0ed74214dbca939935b981906",
"link": null,
"title": "I'm a sub topic too",
"note": null,
"label": null,
"comment": null,
"markers": []
}
]
},
{
"id": "b0ed74214dbca693b947ef03fa",
"link": null,
"title": "second sub topic",
"note": null,
"label": null,
"comment": null,
"markers": []
},
{
"id": "b0ed74214dbca1fe9ade911b94",
"link": null,
"title": "third sub topic",
"note": null,
"label": null,
"comment": null,
"markers": []
},
{
"id": "b0ed74214dbcac00c0eb368b53",
"link": null,
"title": "fourth sub topic",
weixin_39840515
- 粉丝: 448
- 资源: 1万+
最新资源
- ccceeeeee,ukytkyk/liyihm
- 100kW微型燃气轮机Simulink建模,微燃机包括压缩机模块、容积模块、回热器模块、燃烧室模块、膨胀机模块、转子模块以及控制单元模块 考虑微燃机变工况特性下的流量、压缩绝热效率、膨胀绝热效率、压
- 该模型采用龙贝格观测器进行无传感器控制 其利用 PMSM 数学模型构造观测器模型,根据输出的偏差反馈信号来修正状态变量 当观测的电流实现与实际电流跟随时, 可以从观测的反电势计算得到电机的转子位置信
- 双移线驾驶员模型,多项式双移线模拟 软件使用:Matlab Simulink 适用场景:采用多项式搭建双移线期望路径,基于郭孔辉单点预瞄理论,搭建双移线simulink驾驶员模型 模型包含:双移线
- 0cd39e46e9672ca3fc70d6cb46f099dd_1734832088456_8
- 伺服系统永磁同步电机矢量控制调速系统在线转动惯量辨识Matlab仿真 1.模型简介 模型为永磁同步电机伺服控制仿真,采用Matlab R2018a Simulink搭建 模型内主要包含使
- newEditor.css
- 读QFLASH ID和读4线FLASH数据vitis验证工程
- 欧拉系统(openEuler-22.03-LTS-SP3) suricata rpm安装包
- ADRC自抗扰控制永磁同步电机矢量控制调速系统Matlab仿真模型 1.模型简介 模型为基于自抗扰控制(ADRC)的永磁同步电机矢量控制仿真,采用Matlab R2018a Simulink搭
- ADRC线性自抗扰控制感应电机矢量控制调速Matlab Simulink仿真 1.模型简介 模型为基于线性自抗扰控制(LADRC)的感应(异步)电机矢量控制仿真,采用Matlab R2018a
- 感应电机矢量控制调速仿真PI参数自整定 Matlab Simulink仿真模型 1.模型简介 模型为感应(异步)电机矢量控制调速系统仿真,采用Matlab R2018a Simulink搭建
- CC2530无线zigbee裸机代码实现ADC采集内部温度并串口打印.zip
- CC2530无线zigbee裸机代码实现LED流水灯程序.zip
- CC2530无线zigbee裸机代码实现MQ-2气体传感器数值读取.zip
- CC2530无线zigbee裸机代码实现PWM调光控制.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈