Ye_Angel 2021-07-20 10:50 采纳率: 100%
浏览 70
已结题

c#解决txt文档写成xml

img
大概内容就是将txt文档写成xml,感觉所有同学都会,只有我不会555,sos!

  • 写回答

2条回答 默认 最新

  • CSDN专家-showbo 2021-07-20 11:01
    关注

    有帮助麻烦点个采纳【本回答右上角】,谢谢~~ 注意修改文件路径和编码

    img

    using System;
    using System.Text;
    using System.IO;
    using System.Collections.Generic;
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                //注意修改这里的text路径,如果文件存储编码不是utf-8,也要修改编码
                var items = File.ReadAllText(@"E:\data\data.txt", Encoding.UTF8).Split('\n');
    
                StringBuilder sb = new StringBuilder("<zones>");
                Dictionary<string, string> server = new Dictionary<string, string> { };
                string key;
                int index = 1;
                foreach (var item in items)
                {
                    if (item.Trim() == "" || item.StartsWith("$")) continue;//空项或者$开头继续
                    var arr = item.Split('\t');//拆分
    
                    key = arr[1] + '/' + arr[2];//server
                    if (!server.ContainsKey(key))//新server加入
                    {
                        server.Add(key, index.ToString());
                        index++;
                    }
                    var p = double.Parse(arr[3]) / double.Parse(arr[4]);
                    string capacity = "";
                    if (p >= 0 && p < 10) capacity = "1";
                    else if (p >= 10 && p < 30) capacity = "2";
                    else if (p >= 30 && p < 40) capacity = "3";
                    else if (p >= 40 && p < 50) capacity = "4";
                    else if (p >= 50 && p < 70) capacity = "5";
                    else if (p >= 70 && p < 80) capacity = "6";
                    else capacity = "7";
    
                    sb.Append("<zone name=\"" + arr[0] + "\" serverIndex=\"" + server[key] + "\" capacity=\"" + capacity + "\"/>");
    
                }
                sb.Append("</zones>");
    
                string sserver = "<servers>";
                foreach (var k in server.Keys) sserver += "<server>" + k + "</server>";
                sserver += "</servers>";
    
    
                Console.WriteLine("<root>"+ sserver + sb.ToString()+"</root>");//这个就是你要的xml格式字符串
                //要写入文件,注意修改路径
                File.WriteAllText(@"E:\data\data.xml", "<root>" + sserver + sb.ToString() + "</root>", Encoding.UTF8); 
    
                Console.ReadKey();
            }
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月30日
  • 已采纳回答 7月20日
  • 修改了问题 7月20日
  • 创建了问题 7月20日

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器