Java file parsing Xmind

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

  

Guess you like

Origin www.cnblogs.com/jqjx/p/12030452.html