幾行代碼搞定樹形文本轉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.pswp.cn/news/286383.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/286383.shtml
英文地址,請注明出處:http://en.pswp.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&…