百木园-与人分享,
就是让自己快乐。

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

项目地址

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)
	}
}

.qm_point{color:#6DA47D;font-size:18px}.qm_a{color:#0000FF}
作者:janbar
出处:https://www.cnblogs.com/janbar
本文版权归作者和博客园所有,欢迎转载,转载请标明出处。喜欢我的文章请 [关注我] 吧。
如果您觉得本篇博文对您有所收获,可点击 [推荐] [收藏] ,或到右侧 [打赏] 里请我喝杯咖啡,非常感谢。


来源:https://www.cnblogs.com/janbar/p/16607722.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » 基于Go语言的xmind读写库,我主要用来把有道云笔记思维导图转为xmind

相关推荐

  • 暂无文章