C# 关于xml读写操作

项目中用到关于xml文件读写操作,保存数据较少,目前仅用简单的方法实现(XmlDocument),另外两种方法:以后再添加:XmlTextReader和Linq to Xml。
1保存xml数据

private void savexml_Click(object sender, EventArgs e)
        {
            ///bbj 2019-5-14
            ///将panel容器中的控件保存到xml文件中
            ///
            XmlDocument ledConfigDoc = new XmlDocument();//建立XmlDocument对象
            string filepath = Environment.CurrentDirectory;//获取当前路径
            filepath += "\\LedxmlConfig.xml";
            ledConfigDoc.Load(filepath);//加载xml文件
            ledConfigDoc.LoadXml("<ledconfig></ledconfig>");//覆盖保存

            XmlNode root = ledConfigDoc.SelectSingleNode("ledconfig");//建立跟节点

            XmlElement xeKey = ledConfigDoc.CreateElement("config");//创建子节点,并且设置子节点的属性
            XmlAttribute xeType = ledConfigDoc.CreateAttribute("Type");
            xeType.InnerText = "form";
            xeKey.SetAttributeNode(xeType);

            XmlAttribute xeType2 = ledConfigDoc.CreateAttribute("subtype");
            xeType2.InnerText = "form";
            xeKey.SetAttributeNode(xeType2);

            XmlElement xeformX = ledConfigDoc.CreateElement("formX");//创建子节点
            xeformX.InnerText = panel.Tag.ToString();
            xeKey.AppendChild(xeformX);

            XmlElement xeformY = ledConfigDoc.CreateElement("formY");
            xeformY.InnerText = panel.TabIndex.ToString();
            xeKey.AppendChild(xeformY);

            XmlElement xeformWidth = ledConfigDoc.CreateElement("formWidth");
            xeformWidth.InnerText = panel.Width.ToString();
            xeKey.AppendChild(xeformWidth);

            XmlElement xeformHeight = ledConfigDoc.CreateElement("formHeight");
            xeformHeight.InnerText = panel.Height.ToString();
            xeKey.AppendChild(xeformHeight);
            root.AppendChild(xeKey);//挂载父节点

            //保存面板中所有标签的配置

            

            foreach (Control ctro in this.panel.Controls)//将容器中的控件遍历保存配置到xml文件,每个控件作为一个节点
            {
                XmlElement xeKeytmp = ledConfigDoc.CreateElement("config");
                XmlAttribute xeTypetmp = ledConfigDoc.CreateAttribute("Type");
                XmlAttribute xesubTypetmp = ledConfigDoc.CreateAttribute("subtype");
                XmlElement xelabelX = ledConfigDoc.CreateElement("labelX");
                XmlElement xelabelY = ledConfigDoc.CreateElement("labelY");
                XmlElement xelabelWidth = ledConfigDoc.CreateElement("labelWidth");
                XmlElement xelabelHeight = ledConfigDoc.CreateElement("labelHeight");
                XmlElement xelabelFontStr = ledConfigDoc.CreateElement("labelFontStr");
                XmlElement xelabelFontSize = ledConfigDoc.CreateElement("labelFontSize");
                XmlElement xelabelFontStyle = ledConfigDoc.CreateElement("labelFontStyle");
                XmlElement xelabelForeColor = ledConfigDoc.CreateElement("labelForeColor");
                XmlElement xelabelText = ledConfigDoc.CreateElement("labelText");

                    xeTypetmp.InnerText = "label";
                    xeKeytmp.SetAttributeNode(xeTypetmp);

                    xesubTypetmp.InnerText = ctro.Tag.ToString();
                    xeKeytmp.SetAttributeNode(xesubTypetmp);

                    xelabelX.InnerText = ctro.Location.X.ToString();
                    xeKeytmp.AppendChild(xelabelX);

                    xelabelY.InnerText = ctro.Location.Y.ToString();
                    xeKeytmp.AppendChild(xelabelY);

                    xelabelWidth.InnerText = ctro.Width.ToString() ;
                    xeKeytmp.AppendChild(xelabelWidth);

                    xelabelHeight.InnerText = ctro.Height.ToString();
                    xeKeytmp.AppendChild(xelabelHeight);

                    xelabelFontStr.InnerText = ctro.Font.FontFamily.Name;
                    xeKeytmp.AppendChild(xelabelFontStr);

                    xelabelFontSize.InnerText = ctro.Font.Size.ToString();
                    xeKeytmp.AppendChild(xelabelFontSize);

                    xelabelFontStyle.InnerText = ctro.Font.Style.ToString();
                    xeKeytmp.AppendChild(xelabelFontStyle);

                    xelabelForeColor.InnerText = ctro.ForeColor.Name;
                    xeKeytmp.AppendChild(xelabelForeColor);

                    xelabelText.InnerText = ctro.Text;
                    xeKeytmp.AppendChild(xelabelText);
                    root.AppendChild(xeKeytmp);               
            }
            ledConfigDoc.Save(filepath);//保存xml文件         
        }

C# 关于xml读写操作
2读取xml文件

 XmlDocument doc;
            #region 
            ///<summary>
            ///bbj 2019-5-14
            ///防止xml中的注释对读取文档有影响
            doc = new XmlDocument();
            XmlReaderSettings settings = new XmlReaderSettings();
            settings.IgnoreComments = true;//忽略文档中的注释
            string filepath = Environment.CurrentDirectory;
            filepath += "\\LedxmlConfig.xml";
            XmlReader reader = XmlReader.Create(filepath, settings);
            doc.Load(reader);
            #endregion
            XmlNode xn = doc.SelectSingleNode("ledconfig");//得到根节点
            XmlNodeList xnl = xn.ChildNodes;//得到根节点下所有的子节点
            LedFormConfig lfc = new LedFormConfig();
            List<LedLabelControls> labelList = new List<LedLabelControls>();
            LedLabelControls labelTmp = null;
            foreach (XmlNode xnode in xnl)
            {
                //xmlclass bookclass = new xmlclass();
                XmlElement xe = (XmlElement)xnode;
                string str = xe.GetAttribute("Type").ToString();
                XmlNodeList xnlist = xe.ChildNodes;
                if(str == "form")
                {
                    lfc.formX =Convert.ToInt32(xnlist.Item(0).InnerText);
                    lfc.formY = Convert.ToInt32(xnlist.Item(1).InnerText);
                    lfc.formWidth = Convert.ToInt32(xnlist.Item(2).InnerText);
                    lfc.formHeight = Convert.ToInt32(xnlist.Item(3).InnerText);
                }
                if (str == "label")
                {
                    labelTmp = new LedLabelControls();
                    labelTmp.labelX = Convert.ToInt32(xnlist.Item(0).InnerText);
                    labelTmp.labelY = Convert.ToInt32(xnlist.Item(1).InnerText);
                    labelTmp.labelWidth = Convert.ToInt32(xnlist.Item(2).InnerText);
                    labelTmp.labelHeight = Convert.ToInt32(xnlist.Item(3).InnerText);               
                    labelTmp.labelFontStr = xnlist.Item(4).InnerText;
                    labelTmp.labelFontSize = Convert.ToInt32(xnlist.Item(5).InnerText);
                    labelTmp.labelFontStyle = xnlist.Item(6).InnerText;
                    labelTmp.labelForeColor = xnlist.Item(7).InnerText;
                    labelTmp.labelText = xnlist.Item(8).InnerText;
                    labelTmp.labelTag = xe.GetAttribute("subtype").ToString();
                    labelList.Add(labelTmp);
                }
            }
            reader.Close();//读取xml文件结束
            。。。。后续操作。。。

C# 关于xml读写操作