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

打印 上一主题 下一主题

主题 880|帖子 880|积分 2642

项目地址

xmind

基于go语言的xmind接口
使用方法参考: example
本库主要加载xmind文件为json结构,保存文件时也用的json结构而不是xml结构
本库只做了最基本的主题添加功能,类似标签/备注/图片等其他功能不考虑,有想法的自行实现
本库做了通用加载和通用保存方法,可以更灵活的与其他思维导图进行转换
参考: custom_test
示例


  • 自定义json数据创建xmind
  1. package main
  2. import (
  3.         "github.com/jan-bar/xmind"
  4. )
  5. func main() {
  6.         data := `[{"a":"1","b":"main topic"},
  7. {"a":"2","b":"topic1","c":"1"},{"a":"3","b":"topic2","c":"1"},
  8. {"a":"4","b":"topic3","c":"2"},{"a":"5","b":"topic4","c":"2"},
  9. {"a":"6","b":"topic5","c":"3"},{"a":"7","b":"topic6","c":"3"}
  10. ]`
  11.         // 这里定义 a 表示节点id, b 表示主题内容, c 表示父节点id
  12.         // 传入定好的json字符串,以及指定好json的key字符串就可以将任意json数据转换成xmind
  13.         // 也可用用 data := []byte(`{}`) 传入字节数组
  14.         st, err := xmind.LoadCustom(data, "a", "b", "c")
  15.         if err != nil {
  16.                 panic(err)
  17.         }
  18.         err = xmind.SaveSheets("custom.xmind", st)
  19.         if err != nil {
  20.                 panic(err)
  21.         }
  22. }
复制代码

  • 通过接口创建xmind对象,并保存xmind文件
  1. package main
  2. import (
  3.         "github.com/jan-bar/xmind"
  4. )
  5. func main() {
  6.         st1 := xmind.NewSheet("sheet1", "main 1 topic")
  7.         st1.Add("123").Add("456").Add("789").OnTitle("123").
  8.                 Add("2sc").Add("345").OnTitle("456").
  9.                 Add("xzcv").Add("ewr").OnTitle("789").Add("saf").Add("xcv")
  10.         st2 := xmind.NewSheet("sheet2", "main 2 topic")
  11.         st2.Add("aaa").Add("ewr")
  12.         st2.OnTitle("ewr").Title = "xx-ewr\txvf\nwer" // 修改指定主题内容,其中包含特殊转义字符
  13.         st2.Add("cvxcv").Add("wqerwe").OnTitle("aaa").
  14.                 Add("zxs", xmind.ParentMode). // 为节点添加父节点
  15.                 Add("cxv", xmind.BeforeMode). // 在节点之前添加兄弟节点
  16.                 Add("xcas", xmind.AfterMode). // 在节点之后添加兄弟节点
  17.                 OnTitle("cvxcv").Add("34").Add("xcv")
  18.         err := xmind.SaveSheets("create.xmind", st1, st2)
  19.         if err != nil {
  20.                 panic(err)
  21.         }
  22. }
复制代码

  • 加载xmind文件
  1. package main
  2. import (
  3.         "github.com/jan-bar/xmind"
  4. )
  5. func main() {
  6.         // 支持4种方式的加载,详情看内部具体实现
  7.         wb, err := xmind.LoadFile("TestCreateXmind.xmind")
  8.         if err != nil {
  9.                 panic(err)
  10.         }
  11.         if len(wb.Topics) != 2 {
  12.                 return
  13.         }
  14.         // 在第一个sheet页修改一些数据
  15.         wb.Topics[0].OnTitle("345").Add("111").Add("222").OnTitle("xcv").
  16.                 Add("xzcv").Add("werw")
  17.         // 在第二个sheet页修改一些数据
  18.         wb.Topics[1].OnTitle("34").Add("111").Add("222").OnTitle("aaa").
  19.                 Add("xzcv").Add("werw")
  20.         // 可以用xmind打开这两个文件,比较一下不同
  21.         err = wb.Save("TestLoadXmindJson.xmind")
  22.         if err != nil {
  23.                 panic(err)
  24.         }
  25. }
复制代码
出处:https://www.cnblogs.com/janbar本文版权归作者和博客园所有,欢迎转载,转载请标明出处。喜欢我的文章请[关注我]吧。如果您觉得本篇博文对您有所收获,可点击[推荐][收藏],或到右侧 [打赏] 里请我喝杯咖啡,非常感谢。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用多少眼泪才能让你相信

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表