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; }
    }
}

结果

相关推荐
zlinear数据采集卡37 分钟前
D223上位机C#开发实战:从帧解析到波形显示的完整实现
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
唐青枫2 小时前
别把 ImmutableArray 当成只读 List:C#.NET 不可变数组深入详解
c#·.net
zlinear数据采集卡4 小时前
D223 ADC数据处理流水线:从原始采样值到工程单位的完整转换链
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
花落人散处8 小时前
CDiskClean 开发历程 —— 文件清理_目录树解析实现方案参考
c#
离陌在学C#8 小时前
C# 泛型:从基础到高级应用
开发语言·c#
Vertira8 小时前
C# 与 OpencvSharp 编程[基础目录]
c#
格林威10 小时前
多相机并行采图最佳实践:Task.WhenAll + 异常处理 + 资源释放
开发语言·人工智能·数码相机·计算机视觉·c#·视觉检测·机器视觉
yuhulkjv33519 小时前
Claude表格复制到word不再崩溃,AI导出鸭批量导出+格式无损一键搞定
人工智能·ai·c#·word·ai导出鸭
arbboter1 天前
【网络工具】NetProxy网络代理用户手册
开发语言·网络·c#·网络代理·网络异常·代理工具