自定义XML文件的读取

2023-10-29

自定义XML文件的读取

1、创建一个控制台项目,并创建一个XMLHelper.cs文件,并写入下面代码:

 #region 实体
    [Serializable]//表示该类可序列化
    [XmlRoot(ElementName = "MyTest")]
    public class MyTest
    {
        /// <summary>
        /// company基本参数数组
        /// </summary>
        [XmlArray("CompanyConfig")]
        public List<CompanyItem> CompanyConfig { get; set; }
        /// <summary>
        /// Employee基本参数数组
        /// </summary>
        [XmlArray("EmployeeConfig")]
        public List<EmployeeItem> EmployeeConfig { get; set; }
    }

    [Serializable]
    [XmlType(TypeName = "CompanyItem")]
    public class CompanyItem
    {
        /// <summary>
        /// 节点名
        /// </summary>
        [XmlAttribute(AttributeName = "name")]
        public string name { get; set; }
        /// <summary>
        /// 公司名
        /// </summary>
        [XmlAttribute(AttributeName = "companyName")]
        public string companyName { get; set; }

        /// <summary>
        /// 两个尖括号中的内容
        /// </summary>
        [XmlText]
        public string innerText { get; set; }
    }

    [Serializable]
    [XmlType(TypeName = "EmployeeItem")]
    public class EmployeeItem
    {
        /// <summary>
        /// 节点名称
        /// </summary>
        [XmlAttribute(AttributeName = "name")]
        public string name { get; set; }

        /// <summary>
        /// 员工名
        /// </summary>
        [XmlAttribute(AttributeName = "empName")]
        public string empName { get; set; }
        /// <summary>
        /// 城市名
        /// </summary>
        [XmlAttribute(AttributeName = "city")]
        public string city { get; set; }

        /// <summary>
        /// 两个尖括号中间的内容
        /// </summary>
        [XmlText]
        public string innerText { get; set; }
    }
    #endregion

2、创建一个test.xml文件,并在文件中填写下面的代码:

<?xml version="1.0" encoding="utf-8" ?>
<MyTest>
  <CompanyConfig>
    <CompanyItem name="公司表" companyName="公司名">测试的公司</CompanyItem>
  </CompanyConfig>
  <EmployeeConfig>
    <EmployeeItem name="员工表" empName="员工名" city="城市名">测试的员工</EmployeeItem>
  </EmployeeConfig>
</MyTest>

3、program.cs中的代码如下:

static void Main(string[] args)
        {
           //xml文件所在的路径
            string ConfigPath = @"G:\MyProject\FileWatcherService\XMLTest\test.xml";
            string xmlData = string.Empty;
            using (StreamReader sr = new StreamReader(ConfigPath))
            {
                xmlData = sr.ReadToEnd();//读取xml文件
            }
            MyTest myTestConfig;
            XmlSerializer xs = new XmlSerializer(typeof(MyTest));//序列化成实体Config
            using (Stream stream = new MemoryStream(Encoding.UTF8.GetBytes(xmlData)))
            {
                myTestConfig = (MyTest)xs.Deserialize(stream);//反序列化成实体Config

            }
            if (myTestConfig != null)
            {
                //公司config的内容
                foreach (var item in myTestConfig.CompanyConfig)
                {
                    Console.WriteLine($"节点名:{item.name},公司名:{item.companyName},两个尖括号中间的值:{item.innerText}");
                }
                //员工config的内容
                foreach (var item in myTestConfig.EmployeeConfig)
                {
                    Console.WriteLine($"节点名:{item.name},员工名:{item.empName},城市名:{item.city},两个尖括号中间的值:{item.innerText}");
                }
            }
    }

4、上面三步的代码执行后的结果如下图:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自定义XML文件的读取 的相关文章

  • 如何在 C++ 中的文件末尾添加数据?

    我已按照网上的说明进行操作 此代码应该将输入添加到文件 数据库 的末尾 但当我检查时 数据会覆盖现有数据 请帮忙 这是我的代码 int main string name string address string handphone cou
  • std::cout 和 std::wcout 有什么区别?

    在c 中 有什么区别std cout and std wcout 它们都控制流缓冲区的输出或将内容打印到控制台 或者它们只是相似吗 它们作用于不同的字符类型 std cout uses char作为字符类型 std wcout uses w
  • 使用Physics.Raycast 和Physics2D.Raycast 检测对象上的点击

    我的场景中有一个空的游戏对象 带有 2D 组件盒碰撞器 我将脚本附加到该游戏对象 void OnMouseDown Debug Log clic 但是当我点击我的游戏对象时 没有任何效果 你有什么想法 如何检测我的盒子碰撞器上的点击 使用光
  • 如何检查QProcess是否正确执行?

    QProcess process sdcompare QString command sdcompare QStringList args sdcompare command sdcompare diff args sdcompare lt
  • 为 Visual Studio 2013 编译 Tesseract

    我正在尝试使用tesseract在 Visual Studio 2013 中 我在链接器 gt 输入 不是 libtesseract302 static lib 中使用 libtesseract302 lib 一切都正常 并且已编译并运行
  • 将内置类型转换为向量

    我的 TcpClient 类接受vector
  • 单元测试一起运行时失败,单独运行时通过

    所以我的单元测试遇到了一些问题 我不能只是将它们复制并粘贴到这里 但我会尽力而为 问题似乎是 如果我一项一项地运行测试 一切都会按预期进行 但如果我告诉它一起运行测试 则 1 5 将通过 TestMethod public void Obj
  • 生成(非常)大的非重复整数序列而不进行预洗牌

    背景 我编写了一个简单的媒体客户端 服务器 我想生成一个不明显的时间值 随从客户端到服务器的每个命令一起发送 时间戳中将包含相当多的数据 纳秒分辨率 即使它不是真正准确 因为现代操作系统中计时器采样的限制 等 我想做的 在 Linux 上
  • 无法在 Windows 运行时组件库的 UserControl 中创建依赖项属性

    我想在用户控件内创建数据可绑定属性 这个用户控件包含一个 Windows 运行时组件 项目 我使用下面的代码来创建属性 public MyItem CurrentItem get return MyItem GetValue Current
  • 关于在 Windows 上使用 WiFi Direct Api?

    我目前正在开发一个应用程序 我需要在其中创建链接 阅读 无线网络连接 在桌面应用程序 在 Windows 10 上 和平板电脑 Android 但无关紧要 之间 工作流程 按钮 gt 如果需要提升权限 gt 创建类似托管网络的 WiFi 网
  • 如何在 Linq 中获得左外连接?

    我的数据库中有两个表 如下所示 顾客 C ID city 1 Dhaka 2 New york 3 London 个人信息 P ID C ID Field value 1 1 First Name Nasir 2 1 Last Name U
  • 单击 form2 上的按钮触发 form 1 中的方法

    我对 Windows 窗体很陌生 我想知道是否可以通过单击表单 2 中的按钮来触发表单 1 中的方法 我的表格 1 有一个组合框 我的 Form 2 有一个 保存 按钮 我想要实现的是 当用户单击表单 2 中的 保存 时 我需要检查表单 1
  • 将 log4net 与 Autofac 结合使用

    我正在尝试将 log4net 与 Autofac 一起使用 我粘贴了这段代码http autofac readthedocs org en latest examples log4net html http autofac readthed
  • 如何从main方法调用业务对象类?

    我已将代码分为业务对象 访问层 如下所示 void Main Business object public class ExpenseBO public void MakeExpense ExpensePayload payload var
  • 用于 C# 的 TripleDES IV?

    所以当我说这样的话 TripleDES tripledes TripleDES Create Rfc2898DeriveBytes pdb new Rfc2898DeriveBytes password plain tripledes Ke
  • 为什么在setsid()之前fork()

    Why fork before setsid 守护进程 基本上 如果我想将一个进程与其控制终端分离并使其成为进程组领导者 我使用setsid 之前没有分叉就这样做是行不通的 Why 首先 setsid 将使您的进程成为进程组的领导者 但它也
  • 有没有办法强制显示工具提示?

    我有一个验证字段的方法 如果无法验证 该字段将被清除并标记为红色 我还希望在框上方弹出一个工具提示 并向用户显示该值无效的消息 有没有办法做到这一点 并且可以控制工具提示显示的时间 我怎样才能让它自己弹出而不是鼠标悬停时弹出 If the
  • 如何将 Roslyn 语义模型返回的类型符号名称与 Mono.Cecil 返回的类型符号名称相匹配?

    我有以下代码 var paramDeclType m semanticModel GetTypeInfo paramDecl Type Type Where paramDeclType ToString returns System Col
  • 使用 GhostScript.NET 打印 PDF DPI 打印问题

    我在用GhostScript NET http ghostscriptnet codeplex com打印 PDF 当我以 96DPI 打印时 PDF 打印效果很好 但有点模糊 如果我尝试以 600DPI 打印文档 打印的页面会被极大地放大
  • 防止在工厂方法之外实例化对象

    假设我有一个带有工厂方法的类 class A public static A newA Some code logging return new A 是否可以使用 a 来阻止此类对象的实例化new 那么工厂方法是创建对象实例的唯一方法吗 当

随机推荐

  • 计算机竞赛 基于生成对抗网络的照片上色动态算法设计与实现 - 深度学习 opencv python

    文章目录 1 前言 1 课题背景 2 GAN 生成对抗网络 2 1 简介 2 2 基本原理 3 DeOldify 框架 4 First Order Motion Model 5 最后 1 前言 优质竞赛项目系列 今天要分享的是 基于生成对抗
  • avue实现用户本地保存自定义配置字段属性及注意事项(基于tj-vue2-tools)

    avue实现用户本地保存自定义配置字段属性及注意事项 基于tj vue2 tools tj vue2 tools项目地址 https www npmjs com package tj vue2 tools 文档请看项目官方 依赖js bas
  • (python)实现用CPM算法划分社区(两种代码)

    CPM理论讲解 cpm算法学习笔记 蓝砂石的博客 CSDN博客 cpm算法 1 自己实现的代码将社区分为9个 有部分节点未分配社区 自己实现派系过滤算法 import numpy as np import networkx as nx fr
  • 人生若只如初见服务器维护,「北京服务器」人生若只如初见

    文 醉 琴弦 某媒体的编辑约我参与RO2的工作团队 最初并未欣然应允 RO是我第一个网游 亦是伴随我长大 见证我每个不同的人生阶段的载体 投入的感情也不言而喻 并不确定将来还能拿出多少热情投入到另个游戏中 所以迟迟没有答复 阴雨 连绵不绝
  • odoo动态隐藏表单的编辑按钮

    最近在做项目的时候遇到一个问题 其实之前也有遇到 就是说客户要求当一条记录的状态发生变化时 在指定状态的记录不可编辑 之前遇到这个问题是 所做的处理是保存的校验记录的状态 通过raise error的方式去阻止用户保存编辑 这种事后的处理客
  • 可复制的领导力前两章总结

    如何布置任务 1 布置任务和结果 2 复数任何和结果 3 了解任务的目的和背景 4 处理任务过程中会遇到什么意外 遇到意外如何处理 A情况需要汇报 B情况需要自己做决定 5 如果为了达到这个目的和完成任务由什么好的想法和建议吗 示例 给华为
  • cvat for images 1.1 xml文件处理

    xml文件实例 处理代码如下 import xml etree ElementTree as ET import numpy as np import json import math from collections import Cou
  • Linux基础知识总结

    1 ls 显示隐藏文件 ls a 隐藏文件都是以 开头的 回到home目录 ls 通配符 单独的通配符不能识别 必须结合其他字母 1 代表0个或多个任意字符 如只罗列后缀是 cpp的文件 2 只代表单个字符 如罗列前缀有4个字母后缀为 h的
  • EAI Siebel Adapter - Query Page

    IO Account IO 新建workflow 输入参数 PageSize 查询返回几条记录 StartRowNum 从0开始 向后递增 如果用来选择页数的话 StartRowNum PageSize PageNum 1 PageNum从
  • 论美妙的共鸣

    我来提供几个简单实用的思路吧 如果你想和别人有的聊 最为有效的一个解决方法大概是 分析自己知道什么 去发现对方知道什么 暗自合计一下 你们共同知道的是什么 01 比如 你发现对方和你都对动漫感兴趣 你们家是一个地方的 你们都喜欢打游戏 你们
  • 在单页应用中,如何优雅的监听url的变化

    单页应用的原理从早起的根据url的hash变化 到根据H5的history的变化 实现无刷新条件下的页面重新渲染 那么在单页应用中是如何监听url的变化呢 本文将总结一下 如何在单页页面中优雅的监听url的变化 单页应用原理 监听url中的
  • ajax请求图片返回bolb,ajax异步请求图片blob转base64并显示出来

    转载 https www jianshu com p cc9d2a1bd833 methods tapCaptcha var that this Request get captcha responseType blob then res
  • BUUCTF刷题记录

    1 NiZhuangSiWei 知识点 php input php filter 文件包含 序列化 赛题代码
  • Ubuntu22.04 docker镜像apt update 报错E: Problem executing scripts APT::Update::Post-Invoke

    Ubuntu22 04 docker镜像apt update 报错E Problem executing scripts APT Update Post Invoke Dockerfile FROM ubuntu WORKDIR root
  • rhel7和centos7找回root密码 以及rhel6和centos6找回root密码

    第一步 在启动grub的菜单时 按e进入编辑模式 第二步 找到Linux 16的那一行 将ro改为rw init sysroot bin sh 第三步 按下Ctrl X 使用单用户模式启动 第四步 可以使用下面的命令访问系统 chroot
  • 计算机网络原理 谢希仁(第8版)第二章习题答案

    2 01 物理层要解决哪些问题 物理层的主要特点是什么 要解决的问题 屏蔽掉硬件设备与传输媒体的差异 使比特流在传输媒体上透明的传输 用多大电压表示1和0 以及接收方如何识别发送发所发送的比特 确定连接电缆的插头有多少根引脚 以及各引脚如何
  • 力扣(LeetCode)算法_C++——稀疏矩阵的乘法

    给定两个 稀疏矩阵 大小为 m x k 的稀疏矩阵 mat1 和大小为 k x n 的稀疏矩阵 mat2 返回 mat1 x mat2 的结果 你可以假设乘法总是可能的 示例 1 输入 mat1 1 0 0 1 0 3 mat2 7 0 0
  • Vue 中 CSS scoped 的原理

    前言 在日常的Vue项目开发过程中 为了让项目更好的维护一般都会使用模块化开发的方式进行 也就是每个组件维护独立的template script style 主要介绍一下使用
  • 如何用java实现水仙花数

    看到标题 首先先要知道什么是水仙花数 所谓 水仙花数 是指一个三位数 其各位数字立方和等于该数 列如153 1 1 1 5 5 5 3 3 3 那么153就是水仙花数 首先是分析需要的功能 首先他是一个3位数 那值一定在100 1000之间
  • 自定义XML文件的读取

    自定义XML文件的读取 1 创建一个控制台项目 并创建一个XMLHelper cs文件 并写入下面代码 region 实体 Serializable 表示该类可序列化 XmlRoot ElementName MyTest public cl