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:设备搜索,我的客户快速搜索不受影响