XML文件反序列化读取

news2024/11/23 18:46:57

原始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

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

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

Grade.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

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

结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1045699.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

26048-2010 易切削铜合金线材 学习记录

声明 本文是学习GB-T 26048-2010 易切削铜合金线材. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了易切削铜合金线材的产品分类、技术要求、试验方法、检验规则及标志、包装、运输、贮 存和合同(或订货单)内容等。 本标准适用…

国庆中秋特辑(四)MySQL如何性能调优?上篇

MySQL 性能优化是一项关键的任务&#xff0c;可以提高数据库的运行速度和效率。以下是一些优化方法&#xff0c;包括具体代码和详细优化方案。 接下来详细介绍&#xff0c;共有10点&#xff0c;先介绍5点&#xff0c;下次再介绍其他5点 1. 优化 SQL 语句 1.1 创建索引 创建…

【Axure高保真原型】3D圆柱图_中继器版

今天和大家分享3D圆柱图_中继器版的原型模板&#xff0c;图表在中继器表格里填写具体的数据&#xff0c;调整坐标系后&#xff0c;就可以根据表格数据自动生成对应高度的圆柱图&#xff0c;鼠标移入时&#xff0c;可以查看对应圆柱体的数据……具体效果可以打开下方原型地址体验…

了解汽车ecu组成

常用ecu框架组成&#xff1a; BCM(body control module)-车身控制模块: 如英飞凌tc265芯片&#xff1a; 车身控制单元&#xff08;BCM&#xff09;适合应用于12V和24V两种电压工作环境&#xff0c;可用于轿车、大客车和商用车的车身控制。输入模块通过采集电路采集各路开关量和…

SAP和APS系统订单BOM核对(SAP配置BOM攻略九)

配置订单BOM因为要考虑历史ECN、特征语法、BOM语法&#xff0c;是最复杂的一个算法结果&#xff0c;为了摆脱这种被动的场景&#xff0c;博主开发了一个被动核对数据的程序来保障数据质量。 今天是APS系统上线的第三天&#xff0c;我们的核对程序在昨天上线&#xff0c;面对大量…

nvm及node安装与配置

一、nvm安装 nvm&#xff08;Node Version Manager&#xff09;是一个用来管理node版本的工具。我们之所以需要使用node&#xff0c;是因为我们需要使用node中的npm(Node Package Manager)&#xff0c;使用npm的目的是为了能够方便的管理一些前端开发的包&#xff01;nvm的安装…

【Vue】数据表格增删改查与表单验证

目录 一、CRUD实现 1.1 后台CRUD编写 1.2 配置访问路径 1.3 前端编写&#xff08;及窗口&#xff09; 1.4 增删改查实现 1.4.1 新增示例 1.4.2 修改示例 1.4.3 删除示例 二、表单验证 2.1 设置表单验证属性 2.2 自定义验证规则 2.3 使用规则 2.4 效果演示 一、CRU…

通过docker-compose部署项目时遇到的问题

问题起因 最近两天在使用docker把项目的jar包打成镜像&#xff0c;Dockerfile文件的内容如下 FROM java:8 ADD mhxysy-0.0.1-SNAPSHOT.jar mhxysy.jar EXPOSE 8080 CMD java ‐jar mhxysy.jar 但是通过docker运行镜像的时候报错了 Error: Could not find or load main clas…

Midjourney 生成油画技巧

基本 prompt oil painting, a cute corgi dog surrounded with colorful flowers技法 Pointillism 点描绘法 笔刷比较细&#xff0c;图像更精细 oil painting, a cute corgi dog surrounded with colorful flowers, pontillismImpasto 厚涂绘法 笔刷比较粗&#xff0c;图像…

全球与中国管线隔热材料市场:增长趋势、竞争格局与前景展望

管线隔热材料是一种重要的工程材料&#xff0c;主要用于减少管道在传输过程中的热量损失。这种材料在许多领域都有广泛的应用&#xff0c;包括石油、化工、电力等。在这些领域中&#xff0c;管线隔热材料能够有效地减少能源的消耗和浪费&#xff0c;提高管道的运行效率。在选择…

基于C++ Qt的积分抽奖系统源码,实现了用户注册、商品购买、积分抽奖等功能

基本介绍 完整代码下载&#xff1a;基于C Qt的积分抽奖系统 这个是我大二上学期的课程作业仓库&#xff0c; 目的是实现一个超市积分抽奖系统&#xff0c; 基本的功能是实现一个能够在超市购物的同时进行抽奖的积分系统&#xff0c; 主要用到的技术栈就是Qt和c&#xff0c; 叠…

基于AI算法+视频监控技术的智慧幼儿园解决方案

在当今社会&#xff0c;为了孩子的健康启蒙教育&#xff0c;很多家长都会选择将孩子托付给幼儿园管理&#xff0c;但是&#xff0c;幼儿有着年龄小、难控制、易发生突发情况等特点&#xff0c;那么&#xff0c;如何能最大限度的保障幼儿在学校的安全呢&#xff1f;TSINGSEE青犀…

redis实战-redis实现好友关注消息推送

关注和取消关注 在查看笔记详情时&#xff0c;会自动发送请求&#xff0c;调用接口来检查当前用户是否已经关注了笔记作者&#xff0c;我们要实现这两个接口 需求&#xff1a;基于该表数据结构&#xff0c;实现两个接口&#xff1a; 关注和取关接口 判断是否关注的接口 关注…

IT项目经理-IT项目管理十大模版(三)

一、项目组成员表 要把项目组成员的名单都罗列出来&#xff0c;形成一个有效的团队&#xff1b;成员角色和职责要写清楚&#xff0c;职责分明、各司其职&#xff1b;领导审核并签字确认。 二、项目范围说明书 此表&#xff0c;包含了6个部分&#xff0c;基本情况、项目描述…

钉钉自动打卡

钉钉自动打卡 1.准备2.测试3.修改4.效果 因为一系列原因&#xff0c;本人咸鱼50块钱淘了一个小米note移动4G&#xff0c;系统是MIUI6&#xff0c;因为版本太老了&#xff0c;所以不能设置自动开启应用&#xff0c;所以就用了adb,链接电脑&#xff0c;定时跑程序&#xff0c;按按…

uni-app:实现页面效果3

效果 代码 <template><view><!-- 风速风向检测器--><view class"content_position"><view class"content"><view class"SN"><view class"SN_title">设备1</view><view class&quo…

Git_04_撤销工作区的修改

> git restore 文件路径&#xff0b;文件名称1.查看工作区的变动 2.撤回工作区的修改

kafka-consumer-groups.sh消费者组管理

1.查看消费者列表 --list bin/kafka-consumer-groups.sh --bootstrap-server hadoop102:9092,hadoop103:9092,hadoop104:9092 --list先调用MetadataRequest拿到所有在线Broker列表 再给每个Broker发送ListGroupsRequest请求获取 消费者组数据。 2. 查看消费者组详情–describ…

【STM32】IAP升级01 bootloader实现以及APP配置(主要)

APP程序以及中断向量表的偏移设置 前言 通过之前的了解 之前的了解&#xff0c;我们知道实现IAP升级需要两个条件&#xff1a; 1.APP程序必须在 IAP 程序之后的某个偏移量为 x 的地址开始&#xff1b; 2.APP程序的中断向量表相应的移动&#xff0c;移动的偏移量为 x&#xff…

为什么 0.1 + 0.1 !== 0.2

总结了几个很有意思的基础题目&#xff0c;分享一下。 为什么 0.1 0.1 ! 0.2 看到这个问题&#xff0c;不得不想到计算机中的数据类型&#xff0c;其中浮点数表示有限的精度。那么它就无法精确的表示所有的十进制小数&#xff0c;所以在在某些情况下&#xff0c;浮点数的运算…