xml-->txt 按照某关键字 2

创建 控制台项目(像c++)
在这里插入图片描述
在这里插入图片描述
Grade.cs(模型)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization;

namespace xmltotxt1
{
    [XmlRoot("grades")]
    public class Grade
    {
        public string Id { get; set; }
        public string Name { get; set; }
        public string Course { get; set; }
        public int Score { get; set; }
       // public int Length{ get; set; }
    }
}

Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using System.Data.SqlClient;
using System.IO;
using System.Xml.Serialization;
using System.Diagnostics;

namespace xmltotxt1
{
    public class Program
    {
        
        static void Main(string[] args)
        {
            // 创建XmlDocument对象并加载XML文件
            // var path = AppDomain.CurrentDomain.BaseDirectory;
            var path = @"D:\\softwaretools\\vs2022\\sourse\\xmltxtresource";
            XmlDocument doc = new XmlDocument();
            doc.Load(path + "\\" + "prac1.xml");
            //   string path = @"D:\\code\\test.txt";

            // 获取根元素
            XmlElement root = doc.DocumentElement;

            // 获取所有成绩节点
            XmlNodeList grades = root.GetElementsByTagName("grade");

            // 创建List存储成绩信息  --List<数据类型> 变量名=new List<数据类型>();
            List<Grade> gradeList = new List<Grade>();

            // 遍历所有成绩节点并添加到List中
            foreach (XmlNode grade in grades)
            {
                //开始拼接插入的sql语句,逐行插入
                // SelectSingleNode 得到指定的节点
                // bookModel(模型).BookISBN(属性名字) = xe.GetAttribute("ISBN").ToString();  GetAttribute得到具体的属性值
                string id = grade.SelectSingleNode("id").InnerText;
                string name = grade.SelectSingleNode("name").InnerText;
                string course = grade.SelectSingleNode("course").InnerText;
                int score = int.Parse(grade.SelectSingleNode("score").InnerText);
             //   int length=int.Parse(grade.SelectSingleNode("length").InnerText);
               string myinsert = "INSERT INTO grades(id,name,course,score,length) VALUES('" + id + "','" + name + "','" + course + "','" + score + "')";
                // 四个属性的插入语句
                //  string myinsert = "INSERT INTO grades(id,name,course,score,length) VALUES('" + id + "','" + name + "','" + course + "','" + score + "','"+length+"')";

                //插入执行语句,我先注释,你需要的时候在用起来
                //DB dB=new DB();
                //dB.setBySql(myinsert);

                /* 
                     //每行数据放进集合--不简写
                     Grade grade1 = new Grade();
                     grade1.Id = id;
                     grade1.Name=name;
                     grade1.Course=course;
                      grade1.Score = score;
                    // grade.Length=length;
                     gradeList.Add(grade1);
               */

                //每行数据放进集合--简写
                gradeList.Add(new Grade
                {
                    Id = id,
                    Name = name,
                    Course = course,
                    Score = score,
                    //  Length = length
                });
    
            }
            // 按照成绩由大到小排序 格式:(按年龄属性递增)listName.sort((x, y) => x.Age.CompareTo(y.Age));
             gradeList.Sort((x, y) => y.Score.CompareTo(x.Score));
          //  gradeList.Sort((x, y) => x.Id.CompareTo(y.Id));  按照学号Id降序;
            //若是从小到大:gradeList.Sort((x, y) => x.Score.CompareTo(y.Score));

            // 将成绩信息输出到txt文件
            //      var outPath = AppDomain.CurrentDomain.BaseDirectory + "\\" + "output1.txt";
            var outPath = @"D:\\softwaretools\\vs2022\\sourse\\xmltxtresource\\output1.txt";
            //StreamWriter file = new StreamWriter(outPath)

            using (StreamWriter file = new StreamWriter(outPath))
            {
                foreach (Grade grade in gradeList)
                {
                    string line = grade.Id + "," + grade.Name + "," + grade.Course + "," + grade.Score ;
                   // string line = grade.Id + "," + grade.Name + "," + grade.Course + "," + grade.Score+","+grade.Length;
                    file.WriteLine(line);
                }
            }
            
             Console.WriteLine("转换已完成");
           
        }
    }
}

XML文件名:prac1.xml
输出的txt文件名是output1.txt(不需要手动建)
在这里插入图片描述
prac1.xml 内容是:

<?xml version="1.0" encoding="utf-8" ?>
<grades>
   <grade>
     <id>2019001</id>
     <name>张三</name>
     <course>机器学习</course>
     <score>85</score>
   </grade>
   
<grade>
<id>2019002</id>
<name>李四</name>
<course>操作系统</course>
<score>90</score>
</grade>

<grade>
<id>2019003</id>
<name>王五</name>
<course>数据结构</course>
<score>95</score>
</grade>

<grade>
<id>2019006</id>
<name>赵彬如</name>
<course>数据结构</course>
<score>100</score>
</grade>

</grades>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值