mekk.xmind /

Filename Size Date modified Message
43 B
109 B
Extended readme, example of parsing
564 B
Added tag 0.5.1 for changeset 1c820687eba7
9.1 KB
License modified to dual-license Artistic-2.0 and MPL 1.1
112 B
License modified to dual-license Artistic-2.0 and MPL 1.1
25.7 KB
License modified to dual-license Artistic-2.0 and MPL 1.1
2.8 KB
License modified to dual-license Artistic-2.0 and MPL 1.1
1.4 KB
python-modernize -w .


mekk.xmind is a pure-Python handler for XMind mind-map files. It can be used to:

  • generate XMind mind-maps from scratch (for example to visualize some data as a mind-map),
  • modify existing .xmind files,
  • parse existing .xmind files and analyze their content.


Creating mind-map:

from mekk.xmind import XMindDocument

OUTPUT = "test.xmind"

xmind = XMindDocument.create(u"First sheet title", u"Root subject")
first_sheet = xmind.get_first_sheet()
root_topic = first_sheet.get_root_topic()

root_topic.add_subtopic(u"First item")
root_topic.add_subtopic(u"Second item")
t = root_topic.add_subtopic(u"Third item")
t.add_subtopic(u"Second level - 1")
t.add_subtopic(u"Second level - 2")
root_topic.add_subtopic(u"Detached topic", detached = True)
t.add_subtopic(u"Another detached", detached = True)
root_topic.add_subtopic(u"Link example").set_link("")
root_topic.add_subtopic(u"Attachment example").set_attachment(
    file("").read(), ".txt")
root_topic.add_subtopic(u"With note").set_note(u"""This is just some dummy note.""")

MARKER_CODE = "40g6170ftul9bo17p1r31nqk2a"
XMP = "../../py_mekk_nozbe2xmind/src/mekk/nozbe2xmind/NozbeIconsMarkerPackage.xmp"
root_topic.add_subtopic(u"With non-standard marker").add_marker(MARKER_CODE)



print "Saved to", OUTPUT

Note: while examples above use ascii, unicode is fully supported.

Parsing mind map:

from mekk.xmind import XMindDocument

xmind ="test.xmind")

sheet = xmind.get_first_sheet()
print "Sheet title: ", sheet.get_title()

root = sheet.get_root_topic()
print "Root title: ", root.get_title()
print "Root note: ", root.get_note()

for topic in root.get_subtopics():
    print "* ", topic.get_title()
    print "   label: ", topic.get_label()
    print "   link: ", topic.get_link()
    print "   markers: ", list(topic.get_markers())
    # topic.get_subtopics()


To modify, just parse existing document, find items to modify and change them as appropriate, then save.


The code is tracked using Mercurial. Repository can be found on

Use the same place to report bugs, suggest improvements and offer patches.


mekk.xmind is dual-licensed under Artistic License 2.0 and Mozilla Public License 1.1. The complete license texts can be found in Artistic-2.0.txt and MPL-1.1.txt.