首页 > 其他分享 >基于Go语言的xmind读写库,我主要用来把有道云笔记思维导图转为xmind

基于Go语言的xmind读写库,我主要用来把有道云笔记思维导图转为xmind

时间:2022-08-20 15:00:35浏览次数:112  
标签:err 导图 OnTitle Add xmind Go main 节点

项目地址

xmind

基于go语言的xmind接口

使用方法参考: example

本库主要加载xmind文件为json结构,保存文件时也用的json结构而不是xml结构

本库只做了最基本的主题添加功能,类似标签/备注/图片等其他功能不考虑,有想法的自行实现

本库做了通用加载和通用保存方法,可以更灵活的与其他思维导图进行转换

参考: custom_test

示例

  • 自定义json数据创建xmind
package main

import (
	"github.com/jan-bar/xmind"
)

func main() {
	data := `[{"a":"1","b":"main topic"},
{"a":"2","b":"topic1","c":"1"},{"a":"3","b":"topic2","c":"1"},
{"a":"4","b":"topic3","c":"2"},{"a":"5","b":"topic4","c":"2"},
{"a":"6","b":"topic5","c":"3"},{"a":"7","b":"topic6","c":"3"}
]`
	// 这里定义 a 表示节点id, b 表示主题内容, c 表示父节点id
	// 传入定好的json字符串,以及指定好json的key字符串就可以将任意json数据转换成xmind
	// 也可用用 data := []byte(`{}`) 传入字节数组
	st, err := xmind.LoadCustom(data, "a", "b", "c")
	if err != nil {
		panic(err)
	}
	err = xmind.SaveSheets("custom.xmind", st)
	if err != nil {
		panic(err)
	}
}
  • 通过接口创建xmind对象,并保存xmind文件
package main

import (
	"github.com/jan-bar/xmind"
)

func main() {
	st1 := xmind.NewSheet("sheet1", "main 1 topic")
	st1.Add("123").Add("456").Add("789").OnTitle("123").
		Add("2sc").Add("345").OnTitle("456").
		Add("xzcv").Add("ewr").OnTitle("789").Add("saf").Add("xcv")

	st2 := xmind.NewSheet("sheet2", "main 2 topic")
	st2.Add("aaa").Add("ewr")
	st2.OnTitle("ewr").Title = "xx-ewr\txvf\nwer" // 修改指定主题内容,其中包含特殊转义字符
	st2.Add("cvxcv").Add("wqerwe").OnTitle("aaa").
		Add("zxs", xmind.ParentMode). // 为节点添加父节点
		Add("cxv", xmind.BeforeMode). // 在节点之前添加兄弟节点
		Add("xcas", xmind.AfterMode). // 在节点之后添加兄弟节点
		OnTitle("cvxcv").Add("34").Add("xcv")

	err := xmind.SaveSheets("create.xmind", st1, st2)
	if err != nil {
		panic(err)
	}
}
  • 加载xmind文件
package main

import (
	"github.com/jan-bar/xmind"
)

func main() {
	// 支持4种方式的加载,详情看内部具体实现
	wb, err := xmind.LoadFile("TestCreateXmind.xmind")
	if err != nil {
		panic(err)
	}
	if len(wb.Topics) != 2 {
		return
	}

	// 在第一个sheet页修改一些数据
	wb.Topics[0].OnTitle("345").Add("111").Add("222").OnTitle("xcv").
		Add("xzcv").Add("werw")

	// 在第二个sheet页修改一些数据
	wb.Topics[1].OnTitle("34").Add("111").Add("222").OnTitle("aaa").
		Add("xzcv").Add("werw")

	// 可以用xmind打开这两个文件,比较一下不同
	err = wb.Save("TestLoadXmindJson.xmind")
	if err != nil {
		panic(err)
	}
}

标签:err,导图,OnTitle,Add,xmind,Go,main,节点
From: https://www.cnblogs.com/janbar/p/16607722.html

相关文章

  • 基于django中间件的编程思想
    基于django中间件的编程思想在django中,中间件的形式全部写成了列表套字符串的形式MIDDLEWARE=['django.middleware.security.SecurityMiddleware','django.c......
  • ClickHouse 本地Docker版搭建及Go链接体验Demo
    1,Win10用Docker启动单机版本ClickHouseWin10上用WSL搭建Docker环境部署就不讲了,直接上ClickHouse的镜像部署;找到官方Docker镜像库,搜索选中:clickhouse/clickhouse-se......
  • go语言 单向链表
    //示例45packagemainimport"fmt"funcmain(){varintlinkLinkfori:=0;i<10;i++{intlink.InsertTail(i)}......
  • Golang基础教程
    以下使用goland的IDE演示,包含总计的golang基础功能共20个章节一、go语言结构:二、go基础语法:三、变量四、常量五、运算符六、条件语句七、循环八、函数九、变量......
  • django中的中间件
    1.什么是中间件中间件是django的门户,在请求响应进入进出django的时候,都需要先经过中间件,用来全局改变django的输入和输出。django中自带7个中间件,每个中间件都有其特定......
  • 解决goland在mac m1下无法调试问题
     背景新电脑macm1goland调试抛出异常   异常信息第一次异常信息couldnotlaunchprocess:cannotrununderRosetta,checkthattheinstalledbuildo......
  • 代码审计(Java)——WebGoat_AuthenticationFlaws
     零、SecurePassword这里没什么可审计的,经典的爆破,定期更换复杂度相当的密码吧……一、Passwordreset1.level2这里题目给出的信息是登录自己的WebWolf......
  • go 开篇
    一件事情仅有一种做法的理念Go坚持“一件事情仅有一种做法的理念”,只保留了for这一种循环结构,去掉了C语言中的while和do-while循环结构;Go填平了C语言中swit......
  • go if语法
    goif语句自身的特点和Go函数一样,if语句的分支代码块的左大括号与if关键字在同一行上,这也是Go代码风格的统一要求,gofmt工具会帮助我们实现这一点;if语句的布尔表......
  • go学习框架
    基本语法,学+练安装编译及运行demo构建模式及演化gomodule的常规操作入口文件及包初始化语言类型变量常量数组和切片 ......