海南风 發表於 2020-4-12 14:54:00

Python 使用Python操作xmind文件

<p align="center"><span style="font-family: &quot;courier new&quot;, courier"><strong>使用</strong><strong>Python</strong><strong>操作</strong><strong>xmind</strong><strong>文件</strong></span></p>
<p align="right"><span style="font-family: &quot;courier new&quot;, courier"><strong>by:</strong><strong>授客</strong><strong> QQ</strong><strong>:</strong><strong>1033553122</strong></span></p>
<p align="right"><span style="font-family: &quot;courier new&quot;, courier"><strong>&nbsp;</strong></span></p>
<p align="right"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<h1><span style="font-family: &quot;courier new&quot;, courier">测试环境</span></h1>
<p><span style="font-family: &quot;courier new&quot;, courier">Win10</span></p>
<p><span style="font-family: &quot;courier new&quot;, courier">Python 3.5.4</span></p>
<p><span style="font-family: &quot;courier new&quot;, courier">XMind-1.2.0.tar.gz</span></p>
<p><span style="font-family: &quot;courier new&quot;, courier">下载地址:</span></p>
<p><span style="font-family: &quot;courier new&quot;, courier">https://files.pythonhosted.org/packages/7c/8c/e13a82fa9b0394c0d58248196d7d51d7274407cdebc1df36b76034ab990d/XMind-1.2.0.tar.gz</span></p>
<p><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<h1><span style="font-family: &quot;courier new&quot;, courier">创建及更新xmind文件</span></h1>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em>#!/usr/bin/env python</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em># -*- coding:utf-8 -*-</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em>&nbsp;</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><strong>import </strong>xmind</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><strong>from </strong>xmind.core.const <strong>import </strong>TOPIC_DETACHED</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><strong>from </strong>xmind.core.markerref <strong>import </strong>MarkerId</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><strong>from </strong>xmind.core.topic <strong>import </strong>TopicElement</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em># </em><em>加载已有</em><em>xmind</em><em>文件,如果不存在,则新建</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">workbook = xmind.load(<strong>'D:</strong><strong>\\</strong><strong>example</strong><strong>\\</strong><strong>example.xmind'</strong>)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">first_sheet = workbook.getPrimarySheet()&nbsp; <em># </em><em>获取第一个画布</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">first_sheet.setTitle(<strong>'First Sheet'</strong>)&nbsp;&nbsp; <em># </em><em>设置画布名称</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">root_topic1 = first_sheet.getRootTopic()&nbsp; <em># </em><em>获取画布中心主题,默认创建画布时会新建一个空白中心主题</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">root_topic1.setTitle(<strong>'Example Topic'</strong>)&nbsp;&nbsp; <em># </em><em>设置主题名称</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em>&nbsp;</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em>&nbsp;</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em>&nbsp;</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">sub_topic1 = root_topic1.addSubTopic() <em># </em><em>创建子主题,并设置名称</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">sub_topic1.setTitle(<strong>"first sub topic"</strong>)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">sub_topic2 = root_topic1.addSubTopic()</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">sub_topic2.setTitle(<strong>"second sub topic"</strong>)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">sub_topic3 = root_topic1.addSubTopic()</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">sub_topic3.setTitle(<strong>"third sub topic"</strong>)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em># </em><em>除了新建子主题,还可以创建自由主题</em><em>(</em><em>注意</em><em>:</em><em>只有中心主题支持创建自由主题</em><em>)</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">detached_topic1 = root_topic1.addSubTopic(topics_type=TOPIC_DETACHED)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">detached_topic1.setTitle(<strong>"detached topic"</strong>)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">detached_topic1.setPosition(0, 30)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em># </em><em>创建一个子主题的子主题</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">sub_topic1_1 = sub_topic1.addSubTopic()</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">sub_topic1_1.setTitle(<strong>"I'm a sub topic too"</strong>)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">second_sheet = workbook.createSheet()&nbsp;&nbsp; <em># </em><em>创建新画布</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">second_sheet.setTitle(<strong>'Second Sheet'</strong>)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">root_topic2 = second_sheet.getRootTopic()</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">root_topic2.setTitle(<strong>'Root Node'</strong>)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em># </em><em>使用其它方式创建子主题元素</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">topic1 = TopicElement(ownerWorkbook=workbook)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">topic1.setTopicHyperlink(first_sheet.getID()) <em># </em><em>为画布创建一个来自第一个画布的主题链接</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">topic1.setTitle(<strong>"redirection to the first sheet"</strong>)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">topic2 = TopicElement(ownerWorkbook=workbook)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">topic2.setTitle(<strong>"topic with an url hyperlink"</strong>)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">topic2.setURLHyperlink(<strong>"https://www.cnblogs.com/shouke"</strong>)&nbsp; <em># </em><em>为子主题元素设置</em><em>URL</em><em>超链接</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em>&nbsp;</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">topic3 = TopicElement(ownerWorkbook=workbook)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">topic3.setTitle(<strong>"third node"</strong>)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">topic3.setPlainNotes(<strong>"notes for this topic"</strong>)&nbsp; <em># </em><em>为子主题设置备注</em><em> (F4 in XMind)</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">topic3.setTitle(<strong>"topic with </strong><strong>\n</strong><strong> notes"</strong>)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">topic4 = TopicElement(ownerWorkbook=workbook)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">topic4.setFileHyperlink(<strong>"d:</strong><strong>\\</strong><strong>example\demo.jpg"</strong>)&nbsp; <em># </em><em>为子主题元素设置文件超链接</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">topic4.setTitle(<strong>"topic with a file"</strong>)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">topic1_1 = TopicElement(ownerWorkbook=workbook)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">topic1_1.setTitle(<strong>"sub topic"</strong>)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">topic1_1.addLabel(<strong>"a label"</strong>)&nbsp; <em># </em><em>为子主题添加标签(</em><em>official XMind only can a one label </em><em>)</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em># </em><em>添加子主题到非中心主题</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">topic1.addSubTopic(topic1_1)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">topic1_1_1 = TopicElement(ownerWorkbook=workbook)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">topic1_1_1.setTitle(<strong>"topic can add multiple markers"</strong>)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em># </em><em>为主题添加标记</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">topic1_1_1.addMarker(MarkerId.starBlue)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">topic1_1_1.addMarker(MarkerId.flagGreen)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em># </em><em>为子主题添加子主题</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">topic1_1.addSubTopic(topic1_1_1)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">topic2_1 = TopicElement(ownerWorkbook=workbook)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">topic2_1.setTitle(<strong>"topic can add multiple comments"</strong>)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em># </em><em>为主题添加评论</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">topic2_1.addComment(<strong>"I'm a comment!"</strong>)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">topic2_1.addComment(content=<strong>"Hello comment!"</strong>, author=<strong>'devin'</strong>)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">topic2.addSubTopic(topic2_1)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em># </em><em>添加子主题元素到中心主题</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">root_topic2.addSubTopic(topic1)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">root_topic2.addSubTopic(topic2)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">root_topic2.addSubTopic(topic3)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">root_topic2.addSubTopic(topic4)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em># </em><em>遍历子主题</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">topics = root_topic2.getSubTopics()</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><strong>for </strong>index, topic <strong>in </strong>enumerate(topics):</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;&nbsp;&nbsp; topic.addMarker(<strong>"priority-" </strong>+ str(index + 1)) <em># </em><em>为主题添加标记</em><em>(</em><em>优先级图标</em><em>)</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em>&nbsp;</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em># </em><em>为子主题</em><em>1</em><em>和子主题</em><em>2</em><em>创建关系</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">second_sheet.createRelationship(topic1.getID(), topic2.getID(), <strong>"relationship test"</strong>)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em># xmind.save(workbook)&nbsp; # </em><em>保存并覆盖原始文件</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em>&nbsp;</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em># </em><em>仅保存</em><em>content.xml</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em># xmind.save(workbook=workbook, path="d:\\example\\other.xmind", only_content=True)&nbsp; # </em><em>不改动原始文件,另存为其它</em><em>xmind</em><em>文件</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em>&nbsp;</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em># </em><em>仅保存</em><em>content.xml</em><em>、</em><em>comments.xml</em><em>、</em><em>styles.xml</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em># xmind.save(workbook=workbook, path="d:\\example\\other.xmind", except_revisions=True)&nbsp; # </em><em>不改动原始文件,另存为其它</em><em>xmind</em><em>文件</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em>&nbsp;</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em># </em><em>保存所有东西,</em><em>Revisions</em><em>除外,以节省空间</em><em>(</em><em>推荐</em><em>)</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em># xmind.save(workbook=workbook, path="d:\\example\\other.xmind", except_revisions=True)&nbsp; # </em><em>不改动原始文件,另存为其它</em><em>xmind</em><em>文件</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em>&nbsp;</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em># </em><em>保存所有内容,并且另存为其它</em><em>xmind</em><em>文件(推荐)</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">xmind.save(workbook=workbook, path=<strong>'d:</strong><strong>\\</strong><strong>example</strong><strong>\\</strong><strong>other.xmind'</strong>)&nbsp; <em># </em><em>不改动原始文件,另存为其它</em><em>xmind</em><em>文件,等同</em><em> xmind.save(workbook, 'd:\\example\\exam.xmind')</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<h2><span style="font-family: &quot;courier new&quot;, courier">运行结果</span></h2>
<p><span style="font-family: &quot;courier new&quot;, courier">&nbsp;<img src="https://img2020.cnblogs.com/blog/1569452/202004/1569452-20200412145234791-1607328252.png" alt=""></span></p>
<p>&nbsp;</p>
<p><span style="font-family: &quot;courier new&quot;, courier">&nbsp;<img src="https://img2020.cnblogs.com/blog/1569452/202004/1569452-20200412145244153-392353684.png" alt=""></span></p>
<p>&nbsp;</p>
<p><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<h1><span style="font-family: &quot;courier new&quot;, courier">解析xmind文件</span></h1>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em>#!/usr/bin/env python</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em># -*- coding:utf-8 -*-</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em>&nbsp;</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><strong>import </strong>json</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><strong>import </strong>xmind</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><strong>import </strong>pipes</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><strong>def </strong>dict_to_prettify_json(data):</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;&nbsp;&nbsp; print(json.dumps(data, indent=4, separators=(<strong>','</strong>, <strong>': '</strong>)))</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><strong>def </strong>custom_parse_xmind(workbook):</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;&nbsp;&nbsp; elements = {}</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;&nbsp;&nbsp; <strong>def </strong>_echo(tag, element, indent=0):</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; title = element.getTitle()</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; elements = title</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print(<strong>'</strong><strong>\t</strong><strong>' </strong>* indent, tag, <strong>':'</strong>, pipes.quote(title))</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;&nbsp;&nbsp; <strong>def </strong>dump_sheet(sheet):</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root_topic = sheet.getRootTopic()</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _echo(<strong>'RootTopic'</strong>, root_topic, 1)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>for </strong>topic <strong>in </strong>root_topic.getSubTopics() <strong>or </strong>[]:</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _echo(<strong>'AttachedSubTopic'</strong>, topic, 2)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>for </strong>topic <strong>in </strong>root_topic.getSubTopics(xmind.core.const.TOPIC_DETACHED) <strong>or </strong>[]:</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _echo(<strong>'DetachedSubtopic'</strong>, topic, 2)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>for </strong>rel <strong>in </strong>sheet.getRelationships():</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id1, id2 = rel.getEnd1ID(), rel.getEnd2ID()</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print(<strong>'Relationship: [%s] --&gt; [%s]' </strong>% (elements.get(id1), elements.get(id2)))</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;&nbsp;&nbsp; <em># </em><em>遍历画布</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em>&nbsp;&nbsp;&nbsp; </em><strong>for </strong>sheet <strong>in </strong>workbook.getSheets():</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _echo(<strong>'Sheet'</strong>, sheet)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dump_sheet(sheet)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em># </em><em>加载已有</em><em>xmind</em><em>文件,如果不存在,则新建</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">workbook = xmind.load(<strong>'D:</strong><strong>\\</strong><strong>example</strong><strong>\\</strong><strong>example.xmind'</strong>)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">print(workbook.getData()) <em># </em><em>获取整个</em><em>xmind</em><em>数据</em><em>(</em><em>字典的形式</em><em>)</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">dict_to_prettify_json(workbook.getData())</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em># </em><em>获取某个画布的数据</em><em>(</em><em>字典的形式</em><em>)</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">first_sheet = workbook.getPrimarySheet()</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">dict_to_prettify_json(first_sheet.getData())</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em># </em><em>获取某个主题数据</em><em>(</em><em>字典的形式</em><em>)</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">root_topic = first_sheet.getRootTopic()</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">dict_to_prettify_json(root_topic.getData())</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em># </em><em>获取评论数据</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">commentsbook = workbook.commentsbook</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">print(commentsbook.getData())</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier"><em># </em><em>自定义解析</em></span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">custom_parse_xmind(workbook)</span></p>
<p align="left"><span style="font-family: &quot;courier new&quot;, courier">&nbsp;</span></p>
<h1>&nbsp;</h1>

</div>
<div id="MySignature" role="contentinfo">
    <div id="AllanboltSignature">
    <p id="PSignature" style="border: #330066 1px dashed; padding: 5px 10px; font-family: 微软雅黑; font-size: 11px">
      <span style="margin-left: 5px; font-weight: bold">作者:授客</span>
                <br>
      <span style="margin-left: 5px; font-weight: bold">微信/QQ:1033553122
                <br>
      <span style="margin-left: 5px; font-weight: bold">全国软件测试QQ交流群:7156436</span></span>
                <br>
      <span style="margin-left: 5px; font-weight: bold">Git地址:https://gitee.com/ishouke</span>
                <br>
      <span style="margin-left: 5px; font-weight: bold">友情提示:<span>限于时间仓促,文中可能存在错误,欢迎指正、评论!</span>
      <br>
                <span><span style="margin-left: 5px; font-weight: bold; color: red">作者五行缺钱,如果觉得文章对您有帮助,请扫描下边的二维码打赏作者,金额随意</span>,您的支持将是我继续创作的源动力,<span style="margin-left: 10px; font-weight: bold; color: red">打赏后如有任何疑问,请联系我!!!</span></span>
      <br>
                <span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;微信打赏&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                支付宝打赏&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;全国软件测试交流QQ群&nbsp;&nbsp;<br>
                <img src="https://www.cnblogs.com/images/cnblogs_com/shouke/1368383/t_%E5%BE%AE%E4%BF%A1%E6%94%B6%E6%AC%BE%E7%A0%81.bmp">
                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="https://www.cnblogs.com/images/cnblogs_com/shouke/1368383/t_%E6%94%AF%E4%BB%98%E5%AE%9D%E6%94%B6%E6%AC%BE%E7%A0%81.bmp">
                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="https://www.cnblogs.com/images/cnblogs_com/shouke/1368383/t_qq%E7%BE%A4.bmp">
    </span></span></p>
</div><br><br>
来源:https://www.cnblogs.com/shouke/p/12685235.html
頁: [1]
查看完整版本: Python 使用Python操作xmind文件