

基于Go语言的xmind读写库,我主要用来把有道云笔记思维导图转为xmind - janbar
source link: https://www.cnblogs.com/janbar/p/16607722.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

项目地址
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)
}
}
Recommend
-
64
-
64
本文作者针对两款产品——有道云笔记和印象笔记,进行了对比分析,其中包括用户分析、产品定位、交互设计、功能结构等方面,最后针对分析比较给出相关建议。 一、前言 随着科技的发展,传统的纸质笔记本因其不方便携带等原因已不能满足人们的日常需求,而可以安装在...
-
40
原来一直是有道云笔记的忠实用户,后面接触到了所见即所得的 Typora ,有点用不惯有道云笔记了,想着有什么法子能电脑本地文件和有道云笔记同步,这样电脑使用 Typora,手机使用有道云笔记。发现有道云笔记有
-
9
-
9
我身上留着高级语言的血,却被用来对付高级语言! - 业余码农的个人空间 - OSCHINA - 中文开源技术交流社区 在我诞生之前,人类就已经掌握了编程这门手艺。只不过那时他们还得用最底层的汇编语言进行编写程序,那一连串对寄存器和内存地址的操...
-
1
有道桌面客户端是什么语言开发的? - OSCHINA - 中文开源技术交流社区 开源问答...
-
11
有道云笔记新版编辑器架构设计(下) - 有道技术团队的个人空间 - OSCHINA - 中文开源技术交流社区...
-
6
有国界的语言无国界的翻译 网易有道词典获微软商店官方力荐-品玩 业界动态 有国界的语言无国界的翻译 网易有道词典获微软商店官方力荐
-
3
【笔记】Go语言的文件读写 2023-05-17
-
7
基于ChatGPT函数调用来实现C#本地函数逻辑链式调用助力大模型落地 ...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK