xml文件的读写


//读取本地的配置文件到界面       
private void InitControlStatus() { MaterialModel materialModel = new MaterialModel(); string filePath = ConfigurationModel.Instance.ConfigPath + "MaterialConfig.xml"; materialModel = XMLSetting.XMLRead>(filePath); if (materialModel != null && materialModel.CategoryConfig.Count > 0) { foreach (var item in materialModel.CategoryConfig) { switch (item.MaterialType) { case "001": txt_CathodeSN.Text = item.MaterialSN; txt_CathodeSN.Enabled = item.TBoxEnable; btn_CathodeUP.Enabled = item.BtnUPEnable; btn_CathodeDown.Enabled = item.BtnDWNEnable; SessionModel.CathodeStatus = item.IsUpdate; break; case "002": txt_AnodeSN.Text = item.MaterialSN; txt_AnodeSN.Enabled = item.TBoxEnable; btn_AnodeUp.Enabled = item.BtnUPEnable; btn_AnodeDown.Enabled = item.BtnDWNEnable; SessionModel.AnodeStatus = item.IsUpdate; break; case "003": txt_UpDiaphragmSN.Text = item.MaterialSN; txt_UpDiaphragmSN.Enabled = item.TBoxEnable; btn_TopUp.Enabled = item.BtnUPEnable; btn_TopDown.Enabled = item.BtnDWNEnable; SessionModel.TopStatus = item.IsUpdate; break; case "004": txt_DownDiaphragmSN.Text = item.MaterialSN; txt_DownDiaphragmSN.Enabled = item.TBoxEnable; btn_BottomUp.Enabled = item.BtnUPEnable; btn_BottomDown.Enabled = item.BtnDWNEnable; SessionModel.BottomStatus = item.IsUpdate; break; case "005": txt_TapeSN.Text = item.MaterialSN; txt_TapeSN.Enabled = item.TBoxEnable; btn_TapeUP.Enabled = item.BtnUPEnable; btn_TapeDown.Enabled = item.BtnDWNEnable; SessionModel.TapeStatus = item.IsUpdate; break; case "006": txt_HightTempSN.Text = item.MaterialSN; txt_HightTempSN.Enabled = item.TBoxEnable; btn_HighTempUp.Enabled = item.BtnUPEnable; btn_HighTempDown.Enabled = item.BtnDWNEnable; SessionModel.HighTempStatus = item.IsUpdate; break; } } } }
Class MaterialModel类
public class MaterialModel
    {
        public string ID { get; set; }
        /// 
        /// 保存每一项物料的信息,如物料号,控件状态,上料状态
        /// 
        public List CategoryConfig { get; set; }
        /// 
        /// 创建时间
        /// 
        public string CreateTime { get; set; }
    }

    public class Station
    {
        /// 
        /// 物料类型,如:正极,负极,上隔膜,下隔膜,刻码胶,高温胶
        /// 
        public string MaterialType { get; set; }
        /// 
        /// 物料编码
        /// 
        public string MaterialSN { get; set; }
        /// 
        /// 文本框状态
        /// 
        public bool TBoxEnable { get; set; }
        /// 
        /// 上料按钮状态
        /// 
        public bool BtnUPEnable { get; set; }
        /// 
        /// 卸料按钮状态
        /// 
        public bool BtnDWNEnable { get; set; }
        /// 
        /// 是否成功上料
        /// 
        public bool IsUpdate { get; set; }
    }

 class XMLSetting 类

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

namespace UCFileTools
{

    /// 
    /// XML设置映射类型
    /// 
    [XmlRoot("ECUF")]
    public class XMLSetting
    {
        private static string XMLPath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "Config.xml";

        #region 属性


        /// 
        /// 生产模式:0、离线模式 1、采集模式 2、控制模式
        /// 
        [XmlElement("ProdModel")]
        public string ProdModel
        {
            get;
            set;
        }
        #endregion

        #region 构造器


        private XMLSetting()
        {

        }

        public static XMLSetting GetInstance()
        {
            var result = new XMLSetting();
            if (File.Exists(XMLPath))
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(XMLPath); //加载XML文档
                var str = xmlDoc.InnerXml;
                result = Deserialize(str);
            }

            return result;

        }


        #endregion

        /// 
        /// 添加读取方法 
        /// 
        /// 
        /// 文件路径
        /// 
        public static T XMLRead(string path)
        {
            T result = default(T);

            if (File.Exists(path))
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(path);  //加载XML文档
                var str = xmlDoc.InnerXml;
                result = Deserialize(str);
            }

            return result;
        }


        #region  方法
        public void SaveSetting()
        {
            string str = Serialize(this);
            using (FileStream fs = new FileStream(XMLPath, FileMode.Create))
            {
                using (StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default))
                {
                    sw.WriteLine(str);
                }
            }


        }

        #region  序列化对象

        /// 
        /// 序列化
        /// 
        /// 
        /// 
        /// 
        public static string Serialize(object obj, bool format = true)
        {
            if (obj == null)
            {
                return "";
            }
            Encoding gbk = Encoding.GetEncoding("GBK");
            XmlSerializer x = new XmlSerializer(obj.GetType());
            MemoryStream stream = new MemoryStream();
            XmlWriterSettings setting = new XmlWriterSettings();
            setting.Encoding = gbk;
            setting.OmitXmlDeclaration = true;
            setting.Indent = format;
            using (XmlWriter writer = XmlWriter.Create(stream, setting))
            {
                XmlSerializerNamespaces xmlNamespace = new XmlSerializerNamespaces();
                xmlNamespace.Add("", "");  //去掉默认的命名空间
                x.Serialize(writer, obj, xmlNamespace);
            }
            string result = "<?xml version=\"1.0\" encoding=\"GBK\"?>\r\n";
            result += gbk.GetString(stream.ToArray());
            return result;
        }

        /// 
        /// 保存XML文件代码
        /// 
        /// 类对象数据
        /// 路径
        /// 
        /// 
        public static bool SerializeAndSaveFile(object obj, string path, bool format = true)
        {
            bool Flag = false;
            if (obj == null) return Flag;
            Encoding gbk = Encoding.GetEncoding("GBK");
            XmlSerializer x = XmlSerializer.FromTypes(new[] { obj.GetType() })[0];
            //XmlSerializer x = new XmlSerializer(obj.GetType());
            MemoryStream stream = new MemoryStream();
            XmlWriterSettings setting = new XmlWriterSettings();
            setting.Encoding = gbk;
            setting.OmitXmlDeclaration = true;
            setting.Indent = format;
            using (XmlWriter writer = XmlWriter.Create(stream, setting))
            {
                XmlSerializerNamespaces xmlNamespace = new XmlSerializerNamespaces();
                xmlNamespace.Add("", "");
                x.Serialize(writer, obj, xmlNamespace);
            }
            string result = "<?xml version=\"1.0\" encoding=\"GBK\"?>\r\n" +
                gbk.GetString(stream.ToArray());

            //保存数据
            try
            {
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                //string FullFilePath = path + "XmlFile" + DateTime.Now.ToString("yyyy-MM-dd HHmmssfff") + ".xml";
                string FullFilePath = path + "MaterialConfig" + ".xml";
                using (FileStream fs = new FileStream(FullFilePath, FileMode.Create))
                {
                    using (StreamWriter sw = new StreamWriter(fs, Encoding.Default))
                    {
                        sw.WriteLine(result);
                    }
                }
            }
            catch (Exception ex)
            {

                throw;
            }
            return Flag;
        }


        /// 
        /// 反序列化对象
        /// 
        /// 
        /// 
        /// 
        public static T Deserialize(string xml)
        {
            T result = default(T);
            if (!string.IsNullOrEmpty(xml))
            {

                Type objType = typeof(T);
                MemoryStream stream = new MemoryStream(Encoding.GetEncoding("GBK").GetBytes(xml));
                result = (T)Deserialize(objType, stream);
            }
            return result;
        }
        /// 
        /// 反序列化对象
        /// 
        /// 
        /// 
        /// 
        public static object Deserialize(Type objType, Stream xml)
        {
            //XmlSerializer x = new XmlSerializer(objType);
            XmlSerializer x=XmlSerializer.FromTypes(new[] { objType })[0];
            return x.Deserialize(xml);
        }

        #endregion


        #endregion

    }
}

  保存XML文件 的方法

    private void SaveMaterialConfig()
        {
            //Station station;
            MaterialModel materialModel = new MaterialModel();
            List lsSation = new List();

            lsSation.Add(new Station()
            {
                MaterialType = "001",
                MaterialSN = txt_CathodeSN.Text.Trim(),
                TBoxEnable = txt_CathodeSN.Enabled,
                BtnUPEnable=btn_CathodeUP.Enabled,
                BtnDWNEnable=btn_CathodeDown.Enabled,
                IsUpdate=SessionModel.CathodeStatus
            });
            lsSation.Add(new Station()
            {
                MaterialType = "002",
                MaterialSN = txt_AnodeSN.Text.Trim(),
                TBoxEnable = txt_AnodeSN.Enabled,
                BtnUPEnable = btn_AnodeUp.Enabled,
                BtnDWNEnable = btn_AnodeDown.Enabled,
                IsUpdate = SessionModel.AnodeStatus
            });
            lsSation.Add(new Station()
            {
                MaterialType = "003",
                MaterialSN = txt_UpDiaphragmSN.Text.Trim(),
                TBoxEnable = txt_UpDiaphragmSN.Enabled,
                BtnUPEnable = btn_TopUp.Enabled,
                BtnDWNEnable = btn_TopDown.Enabled,
                IsUpdate = SessionModel.TopStatus
            });
            lsSation.Add(new Station()
            {
                MaterialType = "004",
                MaterialSN = txt_DownDiaphragmSN.Text.Trim(),
                TBoxEnable = txt_DownDiaphragmSN.Enabled,
                BtnUPEnable = btn_BottomUp.Enabled,
                BtnDWNEnable = btn_BottomDown.Enabled,
                IsUpdate = SessionModel.BottomStatus
            });
            lsSation.Add(new Station()
            {
                MaterialType = "005",
                MaterialSN = txt_TapeSN.Text.Trim(),
                TBoxEnable = txt_TapeSN.Enabled,
                BtnUPEnable = btn_TapeUP.Enabled,
                BtnDWNEnable = btn_TapeDown.Enabled,
                IsUpdate = SessionModel.TapeStatus
            });
            lsSation.Add(new Station()
            {
                MaterialType = "006",
                MaterialSN = txt_HightTempSN.Text.Trim(),
                TBoxEnable = txt_HightTempSN.Enabled,
                BtnUPEnable = btn_HighTempUp.Enabled,
                BtnDWNEnable = btn_HighTempDown.Enabled,
                IsUpdate = SessionModel.HighTempStatus
            });

            materialModel.ID = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff");
            materialModel.CategoryConfig = lsSation;
            materialModel.CreateTime = DateTime.Now.ToString("yyy-MM-dd HH:mm:ss");
            XMLSetting.SerializeAndSaveFile(materialModel,ConfigurationModel.Instance.ConfigPath);
        }

生成的XML文件为:

<?xml version="1.0" encoding="GBK"?>

  2021-12-11 12:45:37 472
  
    
      001
      ZJ994
      true
      true
      true
      false
    
    
      002
      FJ994
      false
      false
      true
      false
    
    
      003
      GM994
      false
      false
      true
      false
    
    
      004
      GM884
      false
      false
      true
      false
    
    
      005
      KMJ994
      false
      false
      true
      true
    
    
      006
      SWJ994
      false
      false
      true
      false
    
  
  2021-12-11 12:45:37

  项目文件,留个标记,以供参考。