groovy:XmlParser 读 Freeplane.mm文件,生成测试案例.csv文件

Freeplane 是一款基于 Java 的开源软件,继承 Freemind 的思维导图工具软件,它扩展了知识管理功能,在 Freemind 上增加了一些额外的功能,比如数学公式、节点属性面板等。

强大的节点功能,不仅仅节点的种类很多,而且对于节点的编辑样式也丰富很多,比如数学公式、表格、HTML 的支持等;

思维导图最基本的功能就是新增节点了,Freeplane 通过 Enter 和 Tab 分别新建同级节点和下一级节点。

除了使用上述的基本节点功能外,Freeplane 还提供了 总结节点 的功能,选择一些节点,通过 编辑 -> 新增节点 -> 新增总节点 来增加总结节点。

先编写一个测试脚本 test_xmlParser.groovy 如下

java 复制代码
import groovy.util.XmlParser

class Example {
   static void main(String[] args) {
      if (args.size() <1){
          println " usage: groovy test_xmlparser file1.mm ";
          return
      }
      def file1 = args[0]; 
      def parser = new XmlParser();
      def doc = parser.parse(file1);
      doc.node.each{ it ->
        println("${it['@TEXT']}");
        it.node.each{ it1 ->
           println("${it1['@TEXT']}");
           it1.node.each{ it2 ->
              println("${it2['@TEXT']}");
              it2.node.each{ it3 ->
                 println("${it3['@TEXT']}");
                 it3.node.each{ it4 ->
                    println("${it4['@TEXT']}");
                    it4.node.each{ it5 ->
                       println("${it5['@TEXT']}");
                    }
                 }
              }
           }
        }
      }
   }
}

运行 groovy test_xmlParser.groovy root_node.mm

对于node元素本身,我们使用@符号显示附加到node元素的TEXT属性。

再编写 mm_xmlParser_csv.groovy 如下

java 复制代码
import groovy.util.XmlParser
// XmlParser 读 Freeplane.mm文件,生成测试案例.csv文件
//zd?:字段?的拼音缩写
//zd1: 应用系统名的英文或拼音缩写
//zd2: 模块名
//zd3: 正向 或 反向
//zd4: 功能名
//zd5: 执行步骤
//zd6: 预期结果
// Freemind map file1 -> XmlParser => file2.csv
class FmmXmlParser {
   static void main(String[] args) {
      if (args.size() <1){
          println " usage: groovy test_xmlparser file1.mm ";
          return;
      }
      def f1 = args[0];
      File file1 = new File(f1);
      if (!file1.exists()) {
          println(f1 +" not found.");
          return;
      }
      def f2 = f1.replace('.mm','.csv')
      if (f1.equals(f2)){
          println 'file.ext is not .mm';
          return;
      }
      File file2 = new File(f2);
      def fp = file2.newPrintWriter();
      fp.println "应用系统名,测试功能描述,正反向,执行步骤,预期结果";
      
      def parser = new XmlParser();
      def doc = parser.parse(f1);
      
      String zd1,zd2,zd3,zd4,zd5,zd6,txt,csgnms;
      doc.node.each{ it ->
        zd1 = "${it['@TEXT']}";
        it.node.each{ it2 ->
           zd2 = "${it2['@TEXT']}";
           it2.node.each{ it3 ->
              zd3 = "${it3['@TEXT']}";
              it3.node.each{ it4 ->
                 zd4 = "${it4['@TEXT']}";
                 it4.node.each{ it5 ->
                    txt = "${it5['@TEXT']}";
                    if (txt.startsWith("步骤")){
                        zd5 = txt.substring(3);
                    } else if (txt.startsWith("预期结果")){
                        zd6 = txt.substring(5);
                        csgnms = zd2 +'-'+ zd4; //测试功能描述
                        fp.println "${zd1},${csgnms},${zd3},${zd5},${zd6}";
                    } else {
                        zd5=''; zd6='';
                    }                   
                 }
              }
           }
        }
      }
      fp.flush();
      fp.close();
      println "gen: "+ f2;
   }
}

运行 groovy mm_xmlParser_csv root_node.mm

java 复制代码
应用系统名,测试功能描述,正反向,执行步骤,预期结果
root节点,模块1-功能11,正向,1.步骤,1.结果
root节点,模块1-功能12,正向,2.步骤,2.结果
root节点,模块1-功能11,反向,3.步骤,3.结果
root节点,模块1-功能12,反向,4.步骤,4.结果
root节点,模块2-功能21,正向,5.步骤,5.结果
root节点,模块2-功能22,正向,6.步骤,6.结果
root节点,模块2-功能21,反向,7.步骤,7.结果
root节点,模块2-功能22,反向,8.步骤,8.结果
相关推荐
鸡蛋灌Bean16 分钟前
Java常用设计模式大全
java·开发语言·设计模式
喝可乐的布偶猫16 分钟前
Java-----韩顺平单例设计模式学习笔记
java·笔记·设计模式
AskHarries29 分钟前
深入探索Java虚拟机的神秘接口:JVMTI
java·jvm
风象南31 分钟前
SpringBoot应用开机自启动与进程守护配置
java·spring boot·后端
字节卷动42 分钟前
【牛客刷题】活动安排
java·算法·牛客
fouryears_234171 小时前
Spring核心原理的快速入门:快速了解IoC与DI
java·后端·spring
顽疲1 小时前
从零用java实现 小红书 springboot vue uniapp(13)模仿抖音视频切换
java·vue.js·spring boot
星辰离彬1 小时前
Java 与 MySQL 性能优化:MySQL连接池参数优化与性能提升
java·服务器·数据库·后端·mysql·性能优化
半桔1 小时前
【Linux手册】从接口到管理:Linux文件系统的核心操作指南
android·java·linux·开发语言·面试·系统架构
nightunderblackcat2 小时前
新手向:实现ATM模拟系统
java·开发语言·spring boot·spring cloud·tomcat·maven·intellij-idea