创建 控制台项目(像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>