XML文件序列化读取

原始XML文件

XML 复制代码
<?xml version="1.0" encoding="utf-8" ?>
<School headmaster="王校长">
	<Grade grade="12" teacher="张老师">
		<Student name="小米" age="18"/>
		<Student name="小明" age="19"/>
		<Student name="小蜜" age="17"/>
		<Student name="小敏" age="16"/>
		<Student name="小马" age="18"/>
	</Grade>
	<Grade grade="1" teacher="李老师">
		<Student name="小红" age="8"/>
		<Student name="小洪" age="9"/>
		<Student name="小猴" age="7"/>
		<Student name="肖红" age="6"/>
		<Student name="小虹" age="8"/>
	</Grade>
</School>

代码

Program.cs

cs 复制代码
namespace ConsoleApp6SerializeXml
{
    internal class Program
    {
        static void Main(string[] args)
        {
            DirectoryInfo path = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory);
            StreamReader text = new StreamReader(path.Parent.Parent.FullName + "\\testxml.xml");
            XmlSerializer serializer = new XmlSerializer(typeof(School));
            School school = serializer.Deserialize(text) as School;
            Console.WriteLine(school.headmaster);
            foreach (Grade grade in school.grades)
            {
                Console.WriteLine(grade.grade);
                Console.WriteLine(grade.teacher);
                foreach (Student student in grade.students)
                {
                    Console.WriteLine(student.name);
                    Console.WriteLine(student.age);
                }
            }
            Console.ReadKey();
        }
    }
}

School.cs

cs 复制代码
namespace ConsoleApp6SerializeXml
{
    [XmlRoot("School")]
    public class School
    {
        [XmlAttribute("headmaster")]
        public string headmaster { get; set; }
        [XmlElement("Grade")]
        public List<Grade> grades { get; set; }
    }
}

Grade.cs

cs 复制代码
namespace ConsoleApp6SerializeXml
{
    public class Grade
    {
        [XmlAttribute("grade")]
        public int grade { get; set; }
        [XmlAttribute("teacher")]
        public string teacher { get; set; }
        [XmlElement("Student")]
        public List<Student> students { get; set; }
    }
}

Student.cs

cs 复制代码
namespace ConsoleApp6SerializeXml
{
    public class Student
    {
        [XmlAttribute("name")]
        public string name { get; set; }
        [XmlAttribute("age")]
        public int age { get; set; }
    }
}

结果

相关推荐
WarPigs5 小时前
C# dll笔记
c#
淡笑沐白5 小时前
C# HttpClient完整使用指南
c#·httpclient
JaydenAI5 小时前
[MAF预定义的AIContextProvider-02]AgentSkillsProvider——将Agent Skills引入MAF
ai·c#·agent·agent skills·maf
小满Autumn6 小时前
MVVM Light 架构笔记:定位器、命令、消息与 IoC 实践
笔记·学习·架构·c#·上位机·mvvm
小满Autumn7 小时前
CommunityToolkit.Mvvm 架构笔记:现代 MVVM、源生成器与工程化实践
笔记·架构·c#·.net·wpf·mvvm
加号38 小时前
【C#】 JSON 序列化与反序列化:从入门到最佳实践
c#·json
胖纸不争11 小时前
自建 Copilot Cli 代理:让 GitHub Copilot 真正"Bring Your Own Key"
ai·c#
FuckPatience13 小时前
C# new List<T>(IEnumerable<T> collection),链表初始化时传入已存在链表
链表·c#·list
坚果的博客14 小时前
鸿蒙PC三方库适配OAT.xml 与 SHA512SUM 解读:开源合规与源码校验
xml·开源·harmonyos
专注VB编程开发20年16 小时前
工控上位机开发为什么固死.net 4.5.2sdk?适配win7
python·信息可视化·c#