Java解析Xmind文件


1、引入org.xmind.core_XXX.jar包;准备一个test.xmind文件,内容如图所示:

2、Java代码

package com.dave.util;

import org.xmind.core.*;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class XmindUtil {
public static void main(String[] args) throws IOException, CoreException {
String rootPath = System.getProperty("user.dir");
String xmindPath = rootPath + "\\file\\灵薪付小程序2.2版本.xmind";

List<String> lists = xmindToList(xmindPath);

for(String list:lists){
System.out.println(list);
}
}
/**
* 获取工作簿
* IWorkbook:表示整个思维导图
* @param xmindPath:xmind文件路径
*/
public static IWorkbook getIWorkbook(String xmindPath) throws IOException, CoreException {
if (builder == null){
builder = Core.getWorkbookBuilder();// 初始化builder
}
return builder.loadFromFile(new File(xmindPath));
}

/**
* 获取默认工作表的根主题
* xmind关系:工作簿(IWorkbook)——>工作表(ISheet)——>主题(ITopic)
* @param iWorkbook:xmind工作簿
*/
public static ITopic getRootTopic(IWorkbook iWorkbook){
return iWorkbook.getPrimarySheet().getRootTopic();
}

/**
* 获取从根目录到每一个叶子节点的的路径
*/
public static List<String> getAllPath(ITopic rootTopic){
return getAllPathIter(rootTopic.getTitleText() ,rootTopic.getAllChildren());
}

public static List<String> getAllPathIter(String parentContext,List<ITopic> childrens){
for(ITopic children:childrens){
if(children.getAllChildren().size() == 0){
list.add(parentContext+" — "+children.getTitleText().replaceAll("\r|\n",""));
}else {
getAllPathIter(parentContext+" — "+children.getTitleText().replaceAll("\r|\n",""), children.getAllChildren());
}
}
return list;
}

/**
* 解析Xmind文件
*/
public static List<String> xmindToList(String xmindPath) throws IOException, CoreException {
return getAllPath(getRootTopic(getIWorkbook(xmindPath)));
}

private static IWorkbookBuilder builder = null;
private static List<String> list = new ArrayList<>();
}

3、运行结果

搜索客户名称时显示客户层级 —— 功能 —— 步骤:输入客户名或登录账号,点击客户搜索按钮
搜索客户名称时显示客户层级 —— 功能 —— 检查点1:搜索操作 —— 首页搜索框 —— 精准搜索 —— 搜索唯一的账号
搜索客户名称时显示客户层级 —— 功能 —— 检查点1:搜索操作 —— 首页搜索框 —— 模糊匹配 like  "关键字%" —— 匹配符合条件的所有账号
搜索客户名称时显示客户层级 —— 功能 —— 检查点1:搜索操作 —— 首页搜索框 —— 模糊匹配 like  "关键字%" —— 分页显示,每页10条数据
搜索客户名称时显示客户层级 —— 功能 —— 检查点1:搜索操作 —— 首页搜索框 —— 搜索不到结果 —— 列表显示为空
搜索客户名称时显示客户层级 —— 功能 —— 检查点1:搜索操作 —— 账号列表页搜索框 —— 精准搜索 —— 搜索唯一的账号
搜索客户名称时显示客户层级 —— 功能 —— 检查点1:搜索操作 —— 账号列表页搜索框 —— 模糊匹配 like  "关键字%" —— 匹配符合条件的所有账号
搜索客户名称时显示客户层级 —— 功能 —— 检查点1:搜索操作 —— 账号列表页搜索框 —— 搜索不到结果 —— 列表显示为空
搜索客户名称时显示客户层级 —— 功能 —— 检查点2:账户搜索列表页 —— 页面样式 —— 新增Account Level列
搜索客户名称时显示客户层级 —— 功能 —— 检查点2:账户搜索列表页 —— 搜索结果 —— 无搜索结果 —— 列表为空
搜索客户名称时显示客户层级 —— 功能 —— 检查点2:账户搜索列表页 —— 搜索结果 —— 有搜索结果 —— 当前登录账户 —— 仅显示当前账户,Level1
搜索客户名称时显示客户层级 —— 功能 —— 检查点2:账户搜索列表页 —— 搜索结果 —— 有搜索结果 —— 当前登录账户 —— 当前登录账户操作列为空(无more、monitor)
搜索客户名称时显示客户层级 —— 功能 —— 检查点2:账户搜索列表页 —— 搜索结果 —— 有搜索结果 —— 子账户 —— 显示登录账户到当前子账户的所有账户及层级,最上级(登录账号)操作列为空
搜索客户名称时显示客户层级 —— 功能 —— 检查点2:账户搜索列表页 —— 场景 —— 最大搜索层级,能够准确展示
搜索客户名称时显示客户层级 —— 功能 —— 检查点2:账户搜索列表页 —— 场景 —— 切换到其它账户,对应层级变化
搜索客户名称时显示客户层级 —— 功能 —— 检查点2:账户搜索列表页 —— 场景 —— 模糊匹配大量的搜索结果,快速准确的显示所有的结果
搜索客户名称时显示客户层级 —— 功能 —— 检查点2:账户搜索列表页 —— 场景 —— 在搜索列表修改账户信息后搜索,刷新搜索结果列表页,准确性检查(考虑模糊匹配大量搜索结果)
搜索客户名称时显示客户层级 —— 功能 —— 检查点3:其它语种,简单搜索,查看账户列表页样式 —— english
搜索客户名称时显示客户层级 —— 功能 —— 检查点3:其它语种,简单搜索,查看账户列表页样式 —— русский язык
搜索客户名称时显示客户层级 —— 功能 —— 检查点3:其它语种,简单搜索,查看账户列表页样式 —— Español
搜索客户名称时显示客户层级 —— 功能 —— 检查点3:其它语种,简单搜索,查看账户列表页样式 —— ViệtName
搜索客户名称时显示客户层级 —— 功能 —— 检查点3:其它语种,简单搜索,查看账户列表页样式 —— Монгол хэл
搜索客户名称时显示客户层级 —— 功能 —— 检查点3:其它语种,简单搜索,查看账户列表页样式 —— Português
搜索客户名称时显示客户层级 —— 功能 —— 检查点3:其它语种,简单搜索,查看账户列表页样式 —— Türkiye
搜索客户名称时显示客户层级 —— 功能 —— 检查点4:常用浏览器兼容性 —— chrome
搜索客户名称时显示客户层级 —— 功能 —— 检查点4:常用浏览器兼容性 —— firefox
搜索客户名称时显示客户层级 —— 功能 —— 检查点4:常用浏览器兼容性 —— IE
搜索客户名称时显示客户层级 —— 功能 —— 检查点4:常用浏览器兼容性 —— 360
搜索客户名称时显示客户层级 —— 功能 —— 检查点4:常用浏览器兼容性 —— Sougou
搜索客户名称时显示客户层级 —— 功能 —— 检查点4:常用浏览器兼容性 —— QQ
搜索客户名称时显示客户层级 —— 功能 —— 检查点5:中文版账号搜索不受影响 —— 风控
搜索客户名称时显示客户层级 —— 功能 —— 检查点5:中文版账号搜索不受影响 —— RMS
搜索客户名称时显示客户层级 —— 功能 —— 检查点5:中文版账号搜索不受影响 —— 电动车(两个新域名)
搜索客户名称时显示客户层级 —— 功能 —— 检查点6:设备搜索,我的客户快速搜索不受影响

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM