1, the package is introduced org.xmind.core_XXX.jar; test.xmind prepare a document, as shown in FIG contents:
2, Java Code
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\\test.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)); } /** * 获取根节点 * @param iWorkbook:加载的思维导图 */ 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()); }else { getAllPathIter(parentContext+" —— "+children.getTitleText(), 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:设备搜索,我的客户快速搜索不受影响