Einfache Verwendung des Lesens von C#-XML-Parametern

Auslesen vollständig genutzter Testparameter (xml)

Speichern Sie ein XML-Dokument (falls nicht, wird ein Standarddokument mit den darin enthaltenen Parametern unter Verwendung unserer Standardeinstellungen generiert). Jedes Mal, wenn Sie etwas darin ändern, ähnelt das Speichern einer erneuten Aktualisierung.
Den hier verwendeten XML-Testparametern muss private vorangestellt werden, z

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

Fügen Sie hier eine Bildbeschreibung einFügen Sie hier eine Bildbeschreibung ein

Program.cs

Erstellen Sie ein Form1-Objekt, da es für zukünftige Vorgänge verwendet wird
Fügen Sie hier eine Bildbeschreibung ein

Form1.cs

Das ist es, was hier verwendet wird

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

    }

}

Supongo que te gusta

Origin blog.csdn.net/chengcao123/article/details/133827898
Recomendado
Clasificación