天天看点

python xmind_2018-09-14 python-xmind文件解析

2018-09-14 python-xmind文件解析

参考地址:

xmind-sdk-python2.x:

xmind-sdk-python3.x:

安装XMind SDK for python3

git clone https://github.com/jmoraleda/xmind-sdk-python3.git

安装Xmind SDK for python

python3 setup.py install

文件创建

创建一个新文件

from xmind import save

from xmind.core.workbook import WorkbookDocument

if __name__ == "__main__":

"""

创建一个空文件

"""

# 创建xmind workbook

wb = WorkbookDocument("", "./example.xmind")

# 保存xmind 文件

save(wb)

使用加载方法

from xmind import save, load

from xmind.core.workbook import WorkbookDocument

if __name__ == "__main__":

"""

创建一个空文件

"""

# 创建xmind workbook

wb = load("./example.xmind")

# 保存xmind 文件

save(wb)

workSheet 设定名称

from xmind import save

from xmind.core.workbook import WorkbookDocument

if __name__ == "__main__":

"""

WorkSheet作成

"""

# xmind创建WorkBook组成

wb = WorkbookDocument("", "./example.xmind")

# WorkSheet组成

ws = wb.getPrimarySheet()

ws.setTitle("WorkSheet1")

# WorkSheet的Root Topic的获取

rt = ws.getRootTopic()

rt.setTitle("root topic")

# Sub Topic添加到Root Topic

rt.addSubTopic().setTitle("sub topic1")

# 文件保存

save(wb)

Sub topic 追加到root topic

#!/usr/bin/env python3

from xmind import save

from xmind.core.workbook import WorkbookDocument

if __name__ == "__main__":

"""

sub topic追加到root topic

"""

# 创建xmind WorkBook

wb = WorkbookDocument("", "./example.xmind")

# 创建WorkSheet表

ws = wb.getPrimarySheet()

ws.setTitle("WorkSheet1")

# 获取WorkSheet的Root Topic并设置标题

rt = ws.getRootTopic()

rt.setTitle("root topic")

# 将sub topic 追加到 root topic

rt.addSubTopic().setTitle("sub topic1")

# 保存xmind文件

save(wb)

如果要添加多个sub topic,并将它们连续添加到rt对象下。

# 将sub topic 追加到 root topic

rt.addSubTopic().setTitle("sub topic1")

rt.addSubTopic().setTitle("sub topic2")

Topic的层次结构

#!/usr/bin/env python3

from xmind import save

from xmind.core.workbook import WorkbookDocument

if __name__ == "__main__":

"""

在sub topic添加到new topic

image: root topic --- sub topic1 --- sub topic3

|

- sub topic2

"""

# 创建xmind WorkBook

wb = WorkbookDocument("", "./example.xmind")

# 创建workSheet

ws = wb.getPrimarySheet()

ws.setTitle("WorkSheet1")

# 获取WorkSheet的Root Topic并设置标题

rt = ws.getRootTopic()

rt.setTitle("root topic")

# 将sub topic 追加到 root topic

rt.addSubTopic().setTitle("sub topic1")

rt.addSubTopic().setTitle("sub topic2")

# 获取sub topic的index

topic_index = {}

for t in rt.getSubTopics():

topic_index[t.getTitle()] = t.getIndex()

# 在 sub topic1 下 添加主题 sub topic3

rt.getSubTopicByIndex(index=topic_index['sub topic1']).addSubTopic().setTitle("sub topic3")

# 保存xmind文件

save(wb)

在sub topic3下添加主题

#!/usr/bin/env python3

from xmind import save

from xmind.core.workbook import WorkbookDocument

if __name__ == "__main__":

"""

在sub topic添加新 topic

image: root topic --- sub topic1 --- sub topic3 ---- sub topic4

|

- sub topic2

"""

# 创建xmind WorkBook

wb = WorkbookDocument("", "./example.xmind")

# 创建WorkSheet

ws = wb.getPrimarySheet()

ws.setTitle("WorkSheet1")

# 获取WorkSheet的root topic并设置title

rt = ws.getRootTopic()

rt.setTitle("root topic")

# 将Sub Topic追加到Root Topic

rt.addSubTopic().setTitle("sub topic1")

rt.addSubTopic().setTitle("sub topic2")

# 获取sub topic的index

topic_index = {}

for t in rt.getSubTopics():

topic_index[t.getTitle()] = t.getIndex()

# 在 sub topic1 下 添加主题 sub topic3

rt.getSubTopicByIndex(index=topic_index['sub topic1']).addSubTopic().setTitle("sub topic3")

# 在子主题3下添加主题

for t in rt.getSubTopics():

if(t.getTitle() == "sub topic1"):

for st in t.getSubTopics():

st.addSubTopic().setTitle("sub topic4")

# xmind保存

save(wb)

读文件

#!/usr/bin/env python3

from xmind import load, save

if __name__ == "__main__":

"""

读取xmind文件

"""

# 创建xmind workbook

wb = load("./example.xmind")

# 获取worksheet

ws = wb.getPrimarySheet()

# 获取workSheet的根主题

rt = ws.getRootTopic()

# 显示子主题

for topic in rt.getSubTopics():

print(topic.getTitle())

指定要加载的worksheet

#!/usr/bin/env python3

from xmind import load, save

if __name__ == "__main__":

"""

指定要加载的worksheet

"""

# 创建xmind workbook

wb = load("./example.xmind")

# 获取多个工作表

wss = wb.getSheets()

# 指定sheet2表

for ws in wss:

if(ws.getTitle() == "sheet2"):

ws = ws

break

# 获取根主题

rt = ws.getRootTopic()

# 显示子主题

for topic in rt.getSubTopics():

print(topic.getTitle())

将主题添加到现有文件

在下面图中将p添加到a-d。

#!/usr/bin/env python3

from xmind import load, save

def getAlltopic(topics, allTopics):

"""

创建一个字典,返回主题的对象,并将XMind主题的标题作为键

:type topics: list

:param topics: xmind主题对象列表

:type allTopics: dict

:param allTopics: 字典保存主题的对象

:rtype: dict

:return: 返回topic对象的字典,将topic作为作key

"""

for topic in topics:

allTopics[topic.getTitle()] = topic

if(len(topic.getSubTopics()) > 0):

getAlltopic(topic.getSubTopics(), allTopics)

return allTopics

if __name__ == "__main__":

"""

添加到现有主题, 但是,此方法假定主题标题不受影响

"""

# 读取xmind文件

wb = load("./example.xmind")

ws = wb.getPrimarySheet()

rt = ws.getRootTopic()

# 获取所有主题的索引

allTopics = {}

r = getAlltopic(rt.getSubTopics(), allTopics)

# root topic 将“p”添加到a - d

r['d'].addSubTopic().setTitle("p")

# 保存文件

save(wb)

文件别名保存

#!/usr/bin/env python3

from xmind import load, save

if __name__ == "__main__":

"""

文件别名保存

"""

wb = load("./example.xmind")

wss = wb.getSheets()

for ws in wss:

if(ws.getTitle() == "sheet2"):

ws = ws

break

rt = ws.getRootTopic()

rt.addSubTopic().setTitle("b")

save(wb, "./hoge.xmind")

demo:

解析xmind文件

import xmind

dic = {}

def vistor(root):

lis = []

if rootTopic.getSubTopics():

for topic in rootTopic.getSubTopics():

lis.append(topic.getTitle())

dic[rootTopic.getTitle()] = lis

else:

dic[rootTopic.getTitle()] = None

def dump_topic(root):

vistor(root)

for child in root.getSubTopics():

dump_topic(child)

def main():

x = xmind.load('xxxx.xmind')

for sheet in x.getSheets():

# 获取根标题

rootTopic = sheet.getRootTopic()

dump_topic(root)

if __name__ == "__main__":

main()