几行代码搞定树形文本转XML和JSON

由于需要将百度脑图的内容导出为xml或者json格式,发现百度脑图只能导出为树形文本,所以就写了个小应用给编辑用。



    	/// <summary>/// 树形文本转xml/// </summary>/// <param name="txt"></param>/// <returns></returns>public static string Txt2Xml(string txt){//创建XDocument对象var xmlDoc = new XDocument();//逐行提取文本var txts = txt.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);foreach (var tt in txts){var title = tt.TrimStart('\t').Trim();if (title == "") continue;var level = tt.Length - title.Length;//父节点var parentEle = xmlDoc.Descendants("level").LastOrDefault(p => p.Value == (level - 1).ToString())?.Parent;//新节点XElement newChildEle;if (parentEle == null)xmlDoc.Add(newChildEle = new XElement("data"));elseparentEle.Add(newChildEle = new XElement("children"));newChildEle.Add(new XElement("topic", title));newChildEle.Add(new XElement("level", level));/**可以添加其它需要的内容**///newChildEle.Add(new XElement("direction", "right"));//newChildEle.Add(new XElement("expanded", true));}xmlDoc.Declaration = new XDeclaration("1.0", "UTF-8", null);return xmlDoc.Declaration + "\r\n" + xmlDoc;}/// <summary>/// xml转json/// </summary>/// <param name="xmlTxt"></param>/// <returns></returns>public static string Xml2Json(string xmlTxt){return JsonConvert.SerializeXNode(XElement.Parse(xmlTxt), Newtonsoft.Json.Formatting.Indented);}public void SaveToFile(string txt, string type){if (type == "xml"){var xmlDoc = new XmlDocument();xmlDoc.LoadXml(txt);_txtTitle = xmlDoc.DocumentElement?.SelectSingleNode("topic")?.InnerText;}else{var jo = JObject.Parse(txt);_txtTitle = jo["data"]?["topic"]?.ToString();}var sfd = new SaveFileDialog{Filter = @"" + type + @" file|*." + type + "",FilterIndex = 2,RestoreDirectory = true,FileName = _txtTitle ?? "untitled"};var dr = sfd.ShowDialog();if (dr == DialogResult.OK && sfd.FileName.Length > 0){using (var fsw = new StreamWriter(sfd.FileName, false)){fsw.Write(txt);fsw.Close();fsw.Dispose();}new MessageBoxTimeOut().Show(1000, @"保存成功。", @"提示", MessageBoxButtons.OK, MessageBoxIcon.Information);}}


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

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

相关文章

2019年ESRI技术公开课(19集视频全)

1. 视频合集简介 本视频合集为2019版ESRI技术公开视频课&#xff0c;共19集全&#xff0c;主要内容包括ArcGIS、ENVI、大数据、Python应用、大数据、点云场景、三维模型、地理建模、椭球面积、深度学习技术等。 2. 视频合集目录 2019年Esri技术公开课&#xff08;1&#xff09;…

VSAN见证虚拟设备

VSAN 6.1发布了也有两三个月了&#xff0c;其中有2个比较显著的新特性&#xff0c;一个就是支持Stretched Cluster, 也就是说你的VSAN集群现在可以不在一个物理位置了&#xff0c;可以跨数据中心部署了&#xff1b;另外一个就是2节点VSAN。我们知道&#xff0c;原来的VSAN至少需…

《iVX 高仿美团APP制作移动端完整项目》01 标题需求分析思路及制作流程

点击整个专栏查看其它系列文章 &#xff08;系列文章更新中…&#xff09;&#xff1a;《iVX 高仿美团APP制作移动端完整项目》 项目界面预览&#xff1a; 一、创建项目 首先打开在线编辑器地址&#xff1a;https://editor.ivx.cn/ 随后登录帐号后创建一个相对应用项目&…

zepto源码研究 - ajax.js($.ajaxJSONP 的分析)

简要&#xff1a;jsonp是一种服务器和客户端信息传递方式&#xff0c;一般是利用script元素赋值src来发起请求。一般凡是带有src属性的元素发起的请求都是可以跨域的。 那么jsonp是如何获取服务器的数据的呢&#xff1f; jsonp先将指定的一个函数名作为url后面的参数传递到服务…

C语言试题十之将两个两位数的正整数a b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c的十位和千位上,b数的十位和个位数依次放在c数的个位和百位上。

📃个人主页:个人主页 🔥系列专栏:C语言试题200例目录 💬推荐一款刷算法、笔试、面经、拿大公司offer神器 👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、 题目 请编写函…

Blazor University (27)路由 —— 检测导航事件

原文链接&#xff1a;https://blazor-university.com/routing/detecting-navigation-events/检测导航事件源代码[1]从 Blazor 访问浏览器导航是通过 NavigationManager 服务提供的。这可以使用 razor 文件中的 inject 或 CS 文件中的 [Inject] 属性注入到 Blazor 组件中。Locat…

创建 overlay 网络 - 每天5分钟玩转 Docker 容器技术(50)

上一节我们搭建好实验环境&#xff0c;配置并运行了consul&#xff0c;今天开始创建 overlay 网络。 在 host1 中创建 overlay 网络 ov_net1&#xff1a; -d overlay 指定 driver 为 overaly。 docker network ls 查看当前网络&#xff1a; 注意到 ov_net1 的 SCOPE 为 global&…

Js+Css 控制iframe内容自动缩放

竖屏横屏效果<div class"h5box"> <iframe src"http://player.youku.com/embed/XMTI4MjU5OTA3Mg" frameborder"0" width"1280px" height"720px"></iframe> </div><script type"tex…

西北冬日的校园很静谧,却不失韵味,因为有我们美好的青春!

冬日的校园&#xff0c;从枯黄的落叶开始。。。 落叶与栅栏情深。 冬日的篮球场上&#xff0c;不乏挥汗如雨的你&#xff0c;因为你是梦想与自由的追逐者&#xff0c;你可以战胜自己的懒惰。 我们的测量实训场&#xff0c;英雄的用武之地。 测桩&#xff1a;测量的控制点&#…

ps、top 、free查看用户资源信息

查看root用户的进程信息。 运行命令&#xff1a; ps -u root 查看oracle用户的进程信息。 运行命令&#xff1a; ps -u oracle 若查看现在的资源占用情况&#xff0c;如何呢&#xff1f; 运行命令&#xff1a; top 可以很详细的查看各个进程的运行情况。 若查看内存使用情…

《iVX 高仿美团APP制作移动端完整项目》02 搜索、搜索提示及类别需求分析思路及制作流程

点击整个专栏查看其它系列文章 &#xff08;系列文章更新中…&#xff09;&#xff1a;《iVX 高仿美团APP制作移动端完整项目》 项目界面预览&#xff1a; 一、搜索制作 在上一节中我们完成了标题头的制作&#xff0c;接下来我们查看如何制作搜索栏以及分类区制作。 首先我…

C语言试题十一之计算并输出下列多项式值:sn=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)1/2n).

📃个人主页:个人主页 🔥系列专栏:C语言试题200例目录 💬推荐一款刷算法、笔试、面经、拿大公司offer神器 👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、 题目 请编写函…

C#封装FluentValidation,用了之后通篇还是AbstractValidator,真的看不下去了

讲故事前几天看公司一个新项目使用了FluentValidation&#xff0c;大家都知道FluentValidation是一个非常强大的用于构建强类型验证规则的 .NET 框架&#xff0c;帮程序员解决了繁琐的校验问题&#xff0c;用起来非常爽&#xff0c;但我还是遇到了一件非常不爽的事情,如下代码所…

用批处理修复 win10 无法升级的问题

win10无法升级&#xff0c;通常的做法是先停止windows update 服务&#xff0c;删除临时缓存升级目录&#xff0c;重新启动升级服务。 写成一个批处理文件&#xff0c;直接用管理员身份运行一下就搞定。echo offfor /f "skip3 tokens4" %%i in (sc query wuauserv) d…

http304状态码缓存设置问题

当浏览器第一次加载资源的时候&#xff0c;返回一般为200&#xff0c;意思是成功获取资源&#xff0c;并会在浏览器的缓存中记录下max-age&#xff0c;第二次访问的时候&#xff1a;如果只是用浏览器打开&#xff0c;那么浏览器会去判断这个资源在缓存里有没有&#xff0c;如果…

10.2.0.5启动enterprise manager

10.2.0.5启动enterprise manager OEM作为一个实用工具&#xff0c;随着10g和11g的普及&#xff0c;OEM功能越来越强大&#xff0c;oem也应用越来越广泛。但是如果是10.2.0.5的版本&#xff0c;并且安装时间在2010年1月之后&#xff0c;可能会遇到OEM无法启动的情况&#xff0c;…

【数据结构与算法】多种语言(VB、C、C#、JavaScript)系列数据结构算法经典案例教程合集目录

文章目录1. 专栏简介2. 专栏地址3. 专栏目录1. 专栏简介 2. 专栏地址 「 刘一哥与GIS的故事 」之《数据结构与算法》 3. 专栏目录 【经典回放】多种语言系列数据结构算法&#xff1a;二叉树&#xff08;JavaScript版&#xff09;【经典回放】多种语言系列数据结构算法&#…

《iVX 高仿美团APP制作移动端完整项目》03 推介信息及推荐商家分析及制作

点击整个专栏查看其它系列文章 &#xff08;系列文章更新中…&#xff09;&#xff1a;《iVX 高仿美团APP制作移动端完整项目》 项目界面预览&#xff1a; 一、推荐信息制作 推荐信息与之前的标题下推荐信息制作类似&#xff1a; 此时依旧创建一个行&#xff0c;设置其上下…

C语言试题十二之m个人的成绩存放在score数组中,请编写函数function,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指定的数组中。

✅作者简介:大家好我是码莎拉蒂,CSDN、华为云、阿里云、51CTO博客专家🥇🥇🥇 📃个人主页:个人主页 🔥系列专栏:C语言试题200例目录 💬推荐一款刷算法、笔试、面经、拿大公司offer神器 👉 点击跳转进入网站 1、 题目 m个人的成绩存放在score数组中,请编写函…

yum的三种方式

RHEL5中实现各种服务的准备条件&#xff1a;(一)、制作YUM本地源&#xff1a;YUM简介&#xff1a;YUM是Yellow dog Updater Modified的简称&#xff0c;yum是软件的仓库&#xff0c;它可以是http或ftp站点&#xff0c;也可以是本地软件池&#xff0c;但必须包含rpm的header&…