C# 用 System.Xml 读 Freeplane.mm文件,生成测试用例.csv文件

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

先写一个测试程序 test_read_Xml.cs  如下

using System;
using System.IO;
using System.Text;
using System.Xml;namespace Test
{public class ReadXml{    static void Main(string[] args){if (args.Length <1){Console.WriteLine(" usage: test_read_Xml.exe your_file.mm ");return;}if (! File.Exists(args[0])){Console.WriteLine("Error: {0} not exists.", args[0]);return;}if (Path.GetExtension(args[0]) != ".mm"){Console.WriteLine("Tip: can only read file.mm");}string path1 = args[0]; // your_mm_file_path//定义几个变量string xt,zd1,zd2,zd3,zd4,zd5;zd5 ="";// 初始化一个 xmldoc实例XmlDocument xml = new XmlDocument();//XmlNodeList list1,list2,list3;// 导入指定的 xml文件xml.Load(path1);// 指定root节点XmlNode root = xml.SelectSingleNode("/map/node");xt = root.Attributes["TEXT"].Value;Console.WriteLine(xt);if (root.HasChildNodes){// 获取该节点下所有直接子节点//list1 = root.ChildNodes;foreach( XmlNode node1 in root.ChildNodes){if (node1.Name =="node"){zd1 = node1.Attributes["TEXT"].Value;//Console.WriteLine("  "+zd1);if (node1.HasChildNodes){//list2 = node1.ChildNodes;foreach( XmlNode node2 in node1.ChildNodes){if (node2.Name =="node"){zd2 = node2.Attributes["TEXT"].Value;Console.WriteLine("    "+zd2);if (node2.HasChildNodes){//list3 = node2.ChildNodes;foreach( XmlNode node3 in node2.ChildNodes){if (node3.Name =="node"){zd3 = node3.Attributes["TEXT"].Value;Console.WriteLine("      "+zd3);if (node3.HasChildNodes){foreach( XmlNode node4 in node3.ChildNodes){if (node4.Name =="node"){zd4 = node4.Attributes["TEXT"].Value;Console.WriteLine("        "+zd4);if (node4.HasChildNodes){foreach( XmlNode node5 in node4.ChildNodes){if (node5.Name =="node"){zd5 = node5.Attributes["TEXT"].Value;Console.WriteLine("          "+zd5);}}}}}}}}}}}}}}}}}
}

SET PATH=%PATH%;C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319;
编译 csc  test_read_Xml.cs

运行  test_read_Xml.exe  your_file.mm

再编写  mm_Xml_csv.cs  如下

using System;
using System.IO;
using System.Text;
using System.Xml;// 用 System.Xml 读 Freeplane.mm文件,生成测试用例.csv文件
// xt: 应用系统名的英文或拼音缩写
//zd?: 字段?的拼音缩写
//zd1: 模块名
//zd2: 功能名
//zd3: 正向 或 反向
//zd4: 测试要点
//zd5: 执行步骤
//zd6: 预期结果
//csylms:测试用例描述namespace Test
{public class ReadXml{    static void Main(string[] args){if (args.Length <1){Console.WriteLine(" usage: mm_Xml_csv.exe your_file.mm ");return;}if (! File.Exists(args[0])){Console.WriteLine("Error: {0} not exists.", args[0]);return;}if (Path.GetExtension(args[0]) != ".mm"){Console.WriteLine("Tip: can only read file.mm");}string path1 = args[0]; // your_mm_file_pathstring path2 = path1 +".csv";FileStream fs = new FileStream(path2,FileMode.OpenOrCreate,FileAccess.Write);StreamWriter fsw = new StreamWriter(fs);fsw.WriteLine("应用系统名,模块名,测试用例描述,正反向,执行步骤,预期结果");//定义几个变量string xt,zd1,zd2,zd3,zd4,zd5,zd6,txt,csylms;zd5 =""; zd6 ="";// 初始化一个 xmldoc实例XmlDocument xml = new XmlDocument();//XmlNodeList list1,list2,list3;// 导入指定的 xml文件xml.Load(path1);// 指定root节点XmlNode root = xml.SelectSingleNode("/map/node");xt = root.Attributes["TEXT"].Value;Console.WriteLine(xt);if (root.HasChildNodes){// 获取该节点下所有直接子节点//list1 = root.ChildNodes;foreach( XmlNode node1 in root.ChildNodes){if (node1.Name =="node"){zd1 = node1.Attributes["TEXT"].Value;//Console.WriteLine("  "+zd1);if (node1.HasChildNodes){//list2 = node1.ChildNodes;foreach( XmlNode node2 in node1.ChildNodes){if (node2.Name =="node"){zd2 = node2.Attributes["TEXT"].Value;//Console.WriteLine("    "+zd2);if (node2.HasChildNodes){//list3 = node2.ChildNodes;foreach( XmlNode node3 in node2.ChildNodes){if (node3.Name =="node"){zd3 = node3.Attributes["TEXT"].Value;if (node3.HasChildNodes){foreach( XmlNode node4 in node3.ChildNodes){if (node4.Name =="node"){zd4 = node4.Attributes["TEXT"].Value;if (node4.HasChildNodes){foreach( XmlNode node5 in node4.ChildNodes){if (node5.Name =="node"){txt = node5.Attributes["TEXT"].Value;if (txt.StartsWith("步骤:")){zd5 = txt.Substring(3);} else if (txt.StartsWith("预期结果:")){zd6 = txt.Substring(5);csylms = zd2 +"-"+ zd4; //测试用例描述fsw.WriteLine("{0},{1},{2},{3},{4},{5}",xt,zd1,csylms,zd3,zd5,zd6);} else {zd5 =""; zd6 ="";}}}}}}}}}}}}}}}}fsw.Flush();fsw.Close();}}
}

SET PATH=%PATH%;C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319;
编译 csc /t:exe mm_Xml_csv.cs 

运行  mm_Xml_csv.exe  your_freeplane_file.mm

应用系统名,模块名,测试用例描述,正反向,执行步骤,预期结果
应用系统,模块1,功能11-测试要点111,正向,1.步骤,1.结果
应用系统,模块1,功能11-测试要点112,正向,2.步骤,2.结果
应用系统,模块1,功能11-要点111,反向,3.步骤,3.结果
应用系统,模块1,功能11-要点112,反向,4.步骤,4.结果
应用系统,模块2,功能21-测试要点211,正向,5.步骤,5.结果
应用系统,模块2,功能21-测试要点212,正向,6.步骤,6.结果
应用系统,模块2,功能21-要点211,反向,7.步骤,7.结果
应用系统,模块2,功能21-要点212,反向,8.步骤,8.结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/529099.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

某图网查看大图接口结果加密逆向之数据解密扣取

逆向网址 aHR0cHM6Ly95ZXNtenQuY29tLw 逆向链接 aHR0cHM6Ly95ZXNtenQuY29tL2JlYXV0eS8 逆向接口 aHR0cHM6Ly95ZXNtenQuY29tL2FwcC9wb3N0L3A/aWQ9MTA3NjQy 那么我们可以看到接口请求结果为加密数据&#xff0c; 需要手动解开才可以拿到数据 展示图片大图 逆向过程 请求方式&…

无需编程技能:Python爬虫与数据可视化毕业论文代写服务

引言 作为一名在软件技术领域深耕多年的专业人士&#xff0c;我不仅在软件开发和项目部署方面积累了丰富的实践经验&#xff0c;更以卓越的技术实力获得了&#x1f3c5;30项软件著作权证书的殊荣。这些成就不仅是对我的技术专长的肯定&#xff0c;也是对我的创新精神和专业承诺…

展会回顾 | 同立海源生物亮相2024第7届CAR-TCR欧洲峰会

欧洲峰会 2024年2月28-29日&#xff0c;第七届CAR-TCR欧洲峰会CAR-TCR Summit Europe在英国伦敦圆满落幕。同立海源生物亮相本次峰会&#xff0c;重点展示了公司GMP级别的细胞分选磁珠、人源重组蛋白、免疫细胞培养基等CGT领域核心原料和整体解决方案。 作为全球领先的行业盛…

Git LFS【部署 01】Linux环境安装git-lfs及测试

Linux系统安装git-lfs及测试 1.下载2.安装3.测试4.总结 Git LFS&#xff08;Large File Storage&#xff09;是一个用于Git版本控制系统的扩展&#xff0c;它专门用来管理大型文件&#xff0c;如图像、音频和视频文件。 1.下载 安装包下载页面&#xff1a;https://github.com/…

爆款KH-IPEX-K501-29

KH-IPEX-K501-29品牌: kinghelm(金航标)封装: SMD 描述: 1代

[MYSQL数据库]--表的增删查改和字段类型

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、表的增…

使用ISCSI服务部署网络存储

目录 一、ISCS技术应用场景之一 二、环境准备&#xff1a; 2.1网络部署 2.2服务端硬盘 三、配置ISCSI服务端 第一步、安装iscsi服务端的交互式配置工具targetcli 第二步&#xff1a;进入iscsi服务的配置“文件” 第三步&#xff1a;创建iscsi target 名称和配置共享资源。 3.1 …

2.4 为赌博而生的期望值理论

期望值理论 人们在风险决策时&#xff0c;会把数学期望值最大的可能选项作为自己的最终选择。 期望值&#xff1a;指无数次相同的风险决策的最终平均值或加权平均数它往往以货币或财产的数量为表现形式。又称期望货币值。 期望值的计算 圣彼得堡论&#xff1a;为什么人们不愿…

【竞技宝】LOL:TES连下两局轻松击败OMG

【竞技宝】LOL&#xff1a;TES连下两局轻松击败OMG 北京时间2024年3月9日&#xff0c;英雄联盟LPL2024春季常规赛继续进行&#xff0c;昨日共进行三场比赛&#xff0c;第三场比赛由TES对阵OMG。本场比赛&#xff0c;TES的打野选手tian个人表现出色&#xff0c;两局比赛都多次成…

Dgraph 入门教程六《增删改查》

作为入门教程&#xff0c;本章是最后一章教程&#xff0c;Dgraph 还有很多东西可以介绍&#xff0c;如果有时间&#xff0c;后面在出Dgraph的进阶教程。对数据库最重要的操作就是增删改查。本章将详细介绍。 1、查询 Dgraph 在你创建GraphQL的时候会自动创建查询。查询用的是…

点读机女孩是因代言了广告而走红的吗?只知道高君雨这一点你就错了!

点读机女孩是因代言了广告而走红的吗&#xff1f;只知道高君雨这一点你就错了&#xff01; 高君雨&#xff0c;就是那个在点读机广告里&#xff0c;甜美地说着“哪里不会点哪里&#xff0c;so easy”的小女孩。当年的广告一播出&#xff0c;这小女孩就火了&#xff0c;因为她聪…

JavaScript简单数组方法

一些简单的数组方法 ● 切片&#xff08;不会改变原有数组&#xff09; let arr [a, b, c, d, e];console.log(arr.slice(2));● 拼接&#xff08;会改变原有数组&#xff09; console.log(arr.splice(2)); console.log(arr);● 反转&#xff08;会改变原有数组&#xff09…