c# xml 参数读取读取的简单使用

news2024/11/24 0:47:59

完整使用之测试参数的读取(xml)

保存一个xml文档(如果没有就会生成一个默认的 里面的参数用的是我们默认设置的),之后每次更改里面的某项,然后保存 类似于重新刷新一遍。
这里所用的xml测试参数前面需要加上private如

        //测试单号
        private string testnum = "NO.00001";
        public string TestNum
        {
            get { return this.testnum; }
            set
            {
                this.testnum = value;
            }
        }

在这里插入图片描述在这里插入图片描述

Program.cs

创建一个Form1对象,因为以后操作 就是用
在这里插入图片描述

Form1.cs

也就是在这里使用的

namespace WinFormsApp1
{
    public partial class Form1 : Form
    {

        public ArgCfgXml ArgCfgXmlObj;
        //创建一个函数 返回值就是设定的参数那个类
        public ArgValue GetTestPata()
        {
            return ArgCfgXmlObj.ArgPtr;//通过 .具体调节值的函数 来改变值
        }


        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            string path = "F:\\log\\test.xml"; ;// Directory.GetCurrentDirectory() + "\\Config\\测试参数.xml";
            ArgCfgXmlObj = new ArgCfgXml(path);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Program.mainFrm.GetTestPata().SpeedOperate = double.Parse(speedtextBox1.Text);
            Program.mainFrm.GetTestPata().TemperatureOperate = double.Parse(temptextBox2.Text);

            Program.mainFrm.ArgCfgXmlObj.SetPtr();


        }

        private void button1_Click(object sender, EventArgs e)
        {
            speedtextBox1.Text = Program.mainFrm.GetTestPata().SpeedOperate.ToString();
            temptextBox2.Text = Program.mainFrm.GetTestPata().TemperatureOperate.ToString();
        }
    }
}

ArgCfg.cs

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization;

namespace WinFormsApp1
{
    public class ArgValue
    {
        double speed = 70;//速度初始值
        public double SpeedOperate
        {
            get { return this.speed; }
            set
            {
                this.speed = value;
            }
        }

        double temperature = 20;//温度初始值
        public double TemperatureOperate
        {
            get { return this.temperature; }
            set
            {
                this.temperature = value;
            }
        }
    }

    public class ArgCfgXml
    {
        public ArgValue argvalue;//就是上面那个类  实例化对象是在ArgPtr函数中 然后调用XmlSerializer函数
        private string xmlFile;

        //构造函数
        //作用:初始化时调用 用来配置一遍
        //如果第一次使用 也就是还没有创建这个文件 此时会使用我们设定的默认参数创建一个文件
        //如果第二次使用 就不会使用默认参数了 而是使用之后的值,也就是我们可以更改参数值
        public ArgCfgXml(string _xmlFile)
        {
            this.xmlFile = _xmlFile;
            //如果没有读到数据 则为假 此时非假就为真了 就进入语句中;
            //这也是程序运行第一遍才会做的事情,因为第二遍了 里面已经有数据了 就不会执行下面的操作    
            if (!XMLDeserialize(_xmlFile))
            {
                argvalue = new ArgValue(); //实例化一个装满参数的对象
                XmlSerializer(_xmlFile);//将设定的初始值写入 
                XMLDeserialize(_xmlFile);//取出值 方便使用
            }
        }

        //函数的作用:获取/修改参数值 并保存(覆写的)
        //返回值为ArgValue这个类的函数
        public ArgValue ArgPtr
        {
            get { return this.argvalue; }//得到一整个的数据 然后通过 .某个得到具体的值
            set
            {
                this.argvalue = value;
                XmlSerializer(xmlFile);//保存一遍
            }
        }

        //作用:保存结果,且更新现在的对象
        public void SetPtr()
        {
            //先保存 然后将保存好的数据再赋值给 argvalue
            XmlSerializer(this.xmlFile);
            XMLDeserialize(this.xmlFile);
        }


        public bool XmlSerializer(string _xmlSerializerFile)
        {
            try
            {
                if (argvalue == null)
                    argvalue = new ArgValue();
                // Insert code to set properties and fields of the object.
               // XmlSerializer 类,它可以序列化的 XML 文档,将指定类型的对象反序列化 XML文档化为指定类型的对象。
                XmlSerializer mySerializer = new XmlSerializer(typeof(ArgValue));//using System.Xml.Serialization;
                // To write to a file, create a StreamWriter object.
                StreamWriter myWriter = new StreamWriter(_xmlSerializerFile);//默认就是覆写的 如果不想覆写 就加上true
                mySerializer.Serialize(myWriter, argvalue);//序列化后写入
                myWriter.Close();//将打开的文件关闭 不然后面就无法打开 也就无法写入和读取了
            }
            catch (Exception ee)
            {
                return false;
            }
            return true;
        }
        public bool XMLDeserialize(string _xmlDeserializeFile)
        {
            try
            {
                XmlSerializer mySerializer = new XmlSerializer(typeof(ArgValue));
                // To read the file, create a FileStream.
                using (FileStream myFileStream = new FileStream(_xmlDeserializeFile, FileMode.Open))
                {
                    // Call the Deserialize method and cast to the object type.
                    argvalue = (ArgValue)mySerializer.Deserialize(myFileStream);
                }
                // Call the Deserialize method and cast to the object type.

            }
            catch
            {
                return false;
            }
            return true;
        }

    }

}

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

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

相关文章

淘宝天猫2023年双11红包活动入口在哪里活动时间是什么时候开始至什么时间结束2023年天猫淘宝双十一超级红包活动?

2023年淘宝天猫双11超级红包活动领取时间是从2023年10月24日20:00开始至11月11日23:59结束,淘宝天猫双十一活动时间内每天都可以领取1超级红包最高可得23888元。 2023年天猫淘宝双十一红包使用时间分为2个阶段:第一阶段是从2023年10月31日20:00开始至11…

螺杆支撑座对注塑机的生产过程有哪些重要影响?

螺杆支撑座对注塑机的生产过程具有重要影响,主要体现在以下几个方面: 1、精度和稳定性:螺杆支撑座能够提高注塑机的精度和稳定性,从而保证塑料制品的品质和一致性。通过提供稳定的支撑和承载,螺杆支撑座可以减少机器运…

高防CDN:网络安全的不可或缺之选

在当今数字化时代,网络攻击已经成为互联网上的一种不可避免的风险。为了应对不断升级的网络威胁,许多企业和组织正在采用高防御CDN(Content Delivery Network)技术,以确保他们的在线资产得到保护,用户体验得…

python 机器视觉 车牌识别 - opencv 深度学习 机器学习 计算机竞赛

1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 基于python 机器视觉 的车牌识别系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:3分 🧿 更多资…

JDBC封装查询单个和查询多个

Mybatis在转化时候可以将数据库任意类型全转字符串是没有问题的 下面封装存在一个问题就是需要数据库字段类型与实体类字段类型一致 实体类 //String columnName metaData.getColumnName(i 1); 这个方法返回实际列名 String columnLabel metaData.getColumnLabel(i 1);//该…

查看系统的核心信息

查看系统的版本 cat /etc/redhat-release查看系统的主机名 hostname uname -n 查看内核 uname -r查看网卡信息 ip a ifconfig 查看网关 ip route route -n netstat -rn 查看分区black大小 df -h 查看磁盘block大小 df -i 查看磁盘和分区大小 fdisk -l查看内存大小…

竞赛选题 深度学习YOLOv5车辆颜色识别检测 - python opencv

文章目录 1 前言2 实现效果3 CNN卷积神经网络4 Yolov56 数据集处理及模型训练5 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习YOLOv5车辆颜色识别检测 ** 该项目较为新颖,适合作为竞赛课题方向&#xff0…

Delay-Based 拥塞控制算法

上班七天了,有点崩溃,看一篇论文提神:A Delay-Based Approach for Congestion Avoidance in Interconnected Heterogeneous Computer networks,来自 Raj Jain,1989 年。这篇论文基于下图展开: 是不是很熟…

基于DBC Signal Group生成Autosar SR接口(2)

文章目录 前言m脚本生成BUS数据类型建立Input模块及关联对应的BUS数据类型实现效果总结 前言 上一篇文章中,介绍了DBC中SignalGroup的提取,对于已经提取好的Group信息,就可以批量操作生成Simulink BUS及Simulink接口模型了。本文介绍这部分的…

Element el-table 表格内容 样式错乱的问题

表格切换样式错乱展示 因为切换行的高度变化可能未异步渲染 解决方法&#xff1a; 在需要使用v-if渲染的el-table-column元素上加上一个不重复的key值即可解决问题 :key“Math.random()” <el-table-columnprop""label"问题"width"630.5px":…

你不一定知道的四种遍历进程的方法(c语言)

一、前言 有时候写代码的时候&#xff0c;我们需要遍历出系统的一些进程&#xff0c;一般我们是直接在任务管理器中查看&#xff0c;不过我们也可以自己写一个&#xff0c;下面小编将会从三个方面着手&#xff0c;给大家讲讲如何遍历进程。 二、系统快照 一般会用到了3个关键…

智慧公厕管理系统

在当今快速发展的科技时代&#xff0c;智慧城市管理成为了城市发展的重要趋势。而智慧公厕管理系统作为其中的一个重要组成部分&#xff0c;为公共卫生设施的管理提供了全新的解决方案&#xff0c;引领着智慧城市管理科技的新篇章。 一、智慧公厕管理系统的概念 什么是智慧公…

【基于windows desktop上的docker配置nacos,并采用宿主机访问】

1、拉取镜像&#xff08;以下命令全部基于powershell&#xff09; docker pull nacos/nacos-server2、启动容器 docker run -d -e PREFER_HOST_MODEhostname -e MODEstandalone -e JVM_XMS256m -e JVM_XMX256m -e JVM_XMN128m -p 8848:8848 --name nacos --restartalways nac…

VL53L5CX驱动开发(3)----检测阈值

VL53L5CX驱动开发----3.检测阈值 概述实现demo视频教学样品申请源码下载生成STM32CUBEMX选择MCU串口配置IIC配置 INT设置配置使能与复位X-CUBE-TOF1串口重定向代码配置TOF代码配置Kcps/SPAD定义状态说明演示结果 概述 本章展示如何使用VL53L5CX近接传感器的"检测阈值&quo…

vscode用密钥文件连接ssh:如果一直要输密码怎么办

commandshiftP&#xff1a;打开ssh配置文件 加上这么一段&#xff0c;host就是你给主机起的名字 对IdentityFile进行更改&#xff0c;改成相应的密钥文件 然后commandshiftP链接到主机就可以了 但是有时候它会让输入密码 这是由于你给这个IdentityFile的权限太多了&#xf…

【VTK】基础知识分析

很高兴在雪易的CSDN遇见你 &#xff0c;给你糖糖 欢迎大家加入雪易社区-CSDN社区云 前言 本文分享VTK基础操作技术&#xff0c;记录vtk编程中常用的接口&#xff0c;变量等的创建及使用方法希望对各位小伙伴有所帮助&#xff01; 感谢各位小伙伴的点赞关注&#xff0c;小易…

程序包org.apache.commons.XXX不存在

看了好几个博客找这个出现的原因&#xff0c;最后亲测有用的&#xff1a; [IDEA]Java&#xff1a;“程序包XXX不存在”问题的三种解决方案 - lodalo - 博客园 (cnblogs.com) 使用第一种方式&#xff0c;不需要重启&#xff0c;就是在这个条件下输入&#xff1a;mvn idea:idea…

Ruby语言基础知识

Ruby是一种简单快捷的面向对象脚本语言&#xff0c;由日本人松本行弘&#xff08;Yukihiro Matsumoto&#xff09;在20世纪90年代开发&#xff0c;遵守GPL协议和Ruby License。它的灵感和特性来自于Perl、Smalltalk、Eiffel、Ada以及Lisp语言。 以下是Ruby语言的一些特点&#…

Mini小主机All-in-one搭建教程1-安装Esxi7.0虚拟机系统

Mini小主机All-in-one搭建教程1-安装Esxi7.0虚拟机系统 最近小主机似乎很火&#xff0c;知名不知名的品牌&#xff0c;都出了各自的小主机。今天主要介绍小主机下搭建教程安装Esxi、Openwrt、群晖NAS、Win11、centos7、黑苹果、Android-x86系统&#xff0c;这戏系统 搞得好是…

嵌入式C语言自我修养《GNU C编译器扩展语法》学习笔记

目录 一、C语言标准和编译器 二、指定初始化 三、宏构造“利器”&#xff1a;语句表达式 四、typeof与container_of宏 五、零长度数组 六、属性声明&#xff1a;section 七、属性声明&#xff1a;aligned 一、C语言标准和编译器 C语言标准的发展过程&#xff1a; ●…