当前位置: 首页 > news >正文

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

完整使用之测试参数的读取(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(){//先保存 然后将保存好的数据再赋值给 argvalueXmlSerializer(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);//默认就是覆写的 如果不想覆写 就加上truemySerializer.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.lryc.cn/news/194696.html

相关文章:

  • gym原来是这样用的
  • 百度SEO优化技巧与布局(提升网站排名的5种有效方法)
  • 文案配音软件哪个好?(适合新手使用)
  • excel映射xml方法
  • 2023/10/15
  • Linux系统中如何开启和配置OpenGauss数据库的远程连接
  • 【Docker】Docker网络及容器间通信详解
  • TikTok国际版 使用特网科技Bluestacks模拟器安装方法
  • 【Hello Algorithm】暴力递归到动态规划(四)
  • arm day 8
  • k8s-14 存储之volumes
  • 二分图博弈
  • 【C++】C++11—— 包装器
  • LED显示屏高刷新率和低刷新率有什么区别
  • 国际伦敦银点差费值得吗?
  • 常见的作物模型应用技巧!DSSAT模型、APSIM模型、WOFOST模型与PCSE模型等应用
  • 2023年中国超硬材料制品分析及超硬刀具市场规模分析[图]
  • 使用React、Express实现一个问卷发布/收集系统
  • DDD之上下文映射图(Context Mapping)
  • CountDownLatch的原理
  • Java新特性Stream流详解
  • 关于VScode中一些常用的快捷操作!
  • Django 使用Mysql数据库
  • js继承的几种方式(原型链继承、构造函数继承、组合式继承、寄生组合式继承、ES6的Class类继承)
  • AnyTransition/过渡动画, MatchedGeometryEffect/匹配几何动画效果 的使用
  • mac版postman升级后数据恢复办法
  • 四.镜头知识之放大倍率
  • Jenkins UI 自动化持续化集成测试
  • vue项目中引入地图的详细教程
  • MyBatisPlus 多数据源配置