C# XMLパラメータ読み取りの簡単な使用法

完全に使用されるテストパラメータ (xml) の読み取り

XML ドキュメントを保存し (そうでない場合は、デフォルト設定を使用して内部のパラメータを含むデフォルトのドキュメントが生成されます)、ドキュメント内の何かを変更するたびに、保存することは、再度更新することと似ています。
ここで使用される XML テスト パラメーターの前に、次のように private を付ける必要があります。

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

ここに画像の説明を挿入しますここに画像の説明を挿入します

プログラム.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;
        }

    }

}

おすすめ

転載: blog.csdn.net/chengcao123/article/details/133827898