Use Python para manipular archivos xmind
por: Guest QQ : 1033553122
Entorno de prueba
Win10
Python 3.5.4
XMind-1.2.0.tar.gz
Dirección de descarga:
Crear y actualizar archivos xmind
#! / usr / bin / env python
# - * - codificación: utf-8 - * -
importar xmind
desde xmind.core.const import TOPIC_DETACHED
desde xmind.core.markerref import MarkerId
de xmind.core.topic import TopicElement
# Carga tiene XMind archivo, y si no es así, entonces el nuevo
libro de trabajo = xmind.load ( 'D: \\ example \\ example.xmind' )
= Workbook.getPrimarySheet FIRST_SHEET () # Obtener el primer lienzo
first_sheet.setTitle ( 'primera hoja' ) # establecer el nombre del lienzo
= Root_topic1 first_sheet.getRootTopic () # Obtener el tema central del lienzo, crea un nuevo lienzo en blanco para crear un tema central por defecto
root_topic1.setTitle ( 'Ejemplo Tema' ) # establecer el nombre del tema
= Root_topic1.addSubTopic sub_topic1 () # crear un sub-tema, y establecer el nombre
sub_topic1.setTitle ( "primer subtema" )
sub_topic2 = root_topic1.addSubTopic ()
sub_topic2.setTitle ( "segundo subtema" )
sub_topic3 = root_topic1.addSubTopic ()
sub_topic3.setTitle ( "tercer subtema" )
# Además de crear nuevos subtemas, también puede crear temas gratuitos ( nota : solo el tema central admite la creación de temas gratuitos )
detached_topic1 = root_topic1.addSubTopic (topics_type = TOPIC_DETACHED)
detached_topic1.setTitle ( "tema separado" )
detached_topic1.setPosition (0, 30)
# Crear un tema sub-sub-tema
sub_topic1_1 = sub_topic1.addSubTopic ()
sub_topic1_1.setTitle ( "Yo también soy un subtema" )
= Workbook.createSheet SECOND_SHEET, () # crear un nuevo lienzo
second_sheet.setTitle ( 'Segunda hoja' )
root_topic2 = second_sheet.getRootTopic ()
root_topic2.setTitle ( 'Nodo raíz' )
#Utilice otras formas de crear elementos temáticos secundarios
topic1 = TopicElement (ownerWorkbook = workbook)
topic1.setTopicHyperlink (first_sheet.getID ()) # crear un enlace desde el primer tema de la tela es un lienzo
topic1.setTitle ( "redirección a la primera hoja" )
topic2 = TopicElement (ownerWorkbook = workbook)
topic2.setTitle ( "tema con un hipervínculo url" )
topic2.setURLHyperlink ( "https://www.cnblogs.com/shouke" ) # subtemas establecer URL de hipervínculo
topic3 = TopicElement (ownerWorkbook = workbook)
topic3.setTitle ( "tercer nodo" )
topic3.setPlainNotes ( "Notas para el este tema" ) # Conjunto Nota a subtema (F4 en XMind)
topic3.setTitle ( "tema con \ n notas" )
topic4 = TopicElement (ownerWorkbook = workbook)
(topic4.setFileHyperlink : "d \\ Ejemplo \ Demo.jpg" ) # archivo subtemas hipervínculo ajustes
topic4.setTitle ( "tema con un archivo" )
topic1_1 = TopicElement (ownerWorkbook = libro de trabajo)
topic1_1.setTitle ( "subtema" )
topic1_1.addLabel ( "Una etiqueta" ) # etiquetas Añadir para subtema ( XMind Oficial sólo puede Un Una etiqueta )
# Add subtemas al tema no central
topic1.addSubTopic (topic1_1)
topic1_1_1 = TopicElement (ownerWorkbook = workbook)
topic1_1_1.setTitle ( "el tema puede agregar varios marcadores" )
#Agregar etiquetas a temas
topic1_1_1.addMarker (MarkerId.starBlue)
topic1_1_1.addMarker (MarkerId.flagGreen)
# Añadir el subtema de subtemas
topic1_1.addSubTopic (topic1_1_1)
topic2_1 = TopicElement (ownerWorkbook = workbook)
topic2_1.setTitle ( "el tema puede agregar varios comentarios" )
# Añadir comentarios al tema
topic2_1.addComment ( "¡Soy un comentario!" )
topic2_1.addComment (content = "¡Hola comentario!" , author = 'devin' )
topic2.addSubTopic (topic2_1)
#Agregue elementos del tema secundario al tema central
root_topic2.addSubTopic (topic1)
root_topic2.addSubTopic (topic2)
root_topic2.addSubTopic (topic3)
root_topic2.addSubTopic (topic4)
# subtemas que atraviesan
topics = root_topic2.getSubTopics ()
para índice, tema en enumerar (temas):
topic.addMarker ( "de prioridades" + str (index + 1)) # al tema de la etiqueta ( icono de prioridad )
# Subtema 1 y los subtemas 2 para crear una relación
second_sheet.createRelationship (topic1.getID (), topic2.getID (), "prueba de relación" )
# xmind.save (libro de trabajo) #Guarde y sobrescriba el archivo original
# Sólo guardar content.xml
# xmind.save (workbook = workbook, path = "d: \\ example \\ other.xmind", only_content = True) # No cambie el archivo original, guárdelo como otro archivo xmind
# Sólo guardar content.xml , comments.xml , styles.xml
# xmind.save (workbook = workbook, path = "d: \\ example \\ other.xmind", excepto_revisions = True) #No cambie el archivo original, guárdelo como otros archivos xmind
# Guardar todo, las revisiones excepto para ahorrar espacio ( recomendado )
# xmind.save (workbook = workbook, path = "d: \\ example \\ other.xmind", excepto_revisions = True) #No cambie el archivo original, guárdelo como otros archivos xmind
# Guardar todo el contenido, y guardar como otros XMind archivos (recomendado)
xmind.save (Workbook = libro de trabajo, path = 'D: \\ Ejemplo \\ other.xmind' ) # no cambian el archivo original, guardar como otro XMind equivalentes de archivos xmind.save (libro, 'd: \\ ejemplo \\ exam.xmind ')
Resultado de la operación
Analizar archivo xmind
#! / usr / bin / env python
# - * - codificación: utf-8 - * -
importar json
importar xmind
tubos de importación
def dict_to_prettify_json (datos):
print (json.dumps (datos, sangría = 4, separadores = ( ',' , ':' )))
def custom_parse_xmind (libro de trabajo):
elementos = {}
def _echo (etiqueta, elemento, sangría = 0):
title = element.getTitle ()
elementos [element.getID ()] = título
print ( ' \ t ' * indent, tag, ':' , pipes.quote (title))
def dump_sheet (hoja):
root_topic = sheet.getRootTopic ()
_echo ( 'RootTopic' , root_topic, 1)
para el tema en root_topic.getSubTopics () o []:
_echo ( 'AttachedSubTopic' , tema, 2)
para el tema en root_topic.getSubTopics (xmind.core.const.TOPIC_DETACHED) o []:
_echo ( 'DetachedSubtopic' , tema, 2)
para rel en sheet.getRelationships ():
id1, id2 = rel.getEnd1ID (), rel.getEnd2ID ()
print ( 'Relación: [% s] -> [% s]' % (elements.get (id1), elements.get (id2)))
# Atravesando el lienzo
para hoja en workbook.getSheets ():
_echo ( 'Hoja' , hoja)
dump_sheet (hoja)
# Carga tiene XMind archivo, y si no es así, entonces el nuevo
libro de trabajo = xmind.load ( 'D: \\ example \\ example.xmind' )
Imprimir (workbook.getData ()) # get los enteros XMind de datos ( en la forma de un diccionario )
dict_to_prettify_json (workbook.getData ())
# Obtener datos en un lienzo ( en forma de un diccionario )
first_sheet = workbook.getPrimarySheet ()
dict_to_prettify_json (first_sheet.getData ())
# Obtener un tema de datos ( en la forma de un diccionario )
root_topic = first_sheet.getRootTopic ()
dict_to_prettify_json (root_topic.getData ())
# Obtener datos Comentarios
commentsbook = workbook.commentsbook
print (commentsbook.getData ())
# Resolución personalizada
custom_parse_xmind (libro de trabajo)