C# xml 文件的简单操作

来源:互联网 发布:各国驱逐舰知乎 编辑:程序博客网 时间:2024/06/06 03:47

XML 文件格式

<?xml version="1.0" encoding="utf-8"?>
<foot>
  <Coordinator Id="1" ImageUrl="E:\WF_PicFactory\bin\Debug..\..\..\Images\CoordinatorPic\20131213082640.png" CoordName="p1" PhoneNo="123456754" Statue="1" dataTimes="2013/12/13" />
  <Coordinator Id="2" ImageUrl="E:\WF_PicFactory\bin\Debug..\..\..\Images\CoordinatorPic\20131213082652.png" CoordName="p2" PhoneNo="123456754" Statue="1" dataTimes="2013/12/13" />
  <Coordinator Id="3" ImageUrl="E:\WF_PicFactory\bin\Debug..\..\..\Images\CoordinatorPic\20131213082659.png" CoordName="p3" PhoneNo="123456754" Statue="2" dataTimes="2013/12/13" />
  <Coordinator Id="4" ImageUrl="E:\WF_PicFactory\bin\Debug..\..\..\Images\CoordinatorPic\20131213082708.png" CoordName="p4" PhoneNo="123456754" Statue="2" dataTimes="2013/12/13" />
  <Coordinator Id="5" ImageUrl="E:\WF_PicFactory\bin\Debug..\..\..\Images\CoordinatorPic\20131213082718.png" CoordName="p5" PhoneNo="123456754" Statue="3" dataTimes="2013/12/13" />
  <Coordinator Id="6" ImageUrl="E:\WF_PicFactory\bin\Debug..\..\..\Images\CoordinatorPic\20131213082724.png" CoordName="p6" PhoneNo="123456754" Statue="3" dataTimes="2013/12/13" />
  <Coordinator Id="7" ImageUrl="E:\WF_PicFactory\bin\Debug..\..\..\Images\CoordinatorPic\20131213082733.png" CoordName="p7" PhoneNo="123456754" Statue="0" dataTimes="2013/12/13" />
  <Coordinator Id="8" ImageUrl="E:\WF_PicFactory\bin\Debug..\..\..\Images\CoordinatorPic\20131213082741.png" CoordName="p8" PhoneNo="123456754" Statue="0" dataTimes="2013/12/13" />
</foot>

 

  XmlDocument xmldoc = new XmlDocument();
  string docpath = Application.StartupPath + @"..\..\..\ConfigXml\CoordMsg.xml";//存放值班人员信息Xml文件路径

 

        /// <summary>
        /// 获取所有Coordinators对象
        /// 获取所有值班员工信息
        /// </summary>
        /// <returns></returns>
        private List<Coordinator> GetCdinator()
        {
            try
            {
                List<Coordinator> cdinators = new List<Coordinator>();

                xmldoc.Load(docpath);
                XmlNodeList nodelist = xmldoc.SelectSingleNode("foot").ChildNodes;
                foreach (XmlNode XN in nodelist)
                {
                    Coordinator cd = new Coordinator();
                    cd.Id = XN.Attributes["Id"].Value;
                    cd.CoordPicUrl = XN.Attributes["ImageUrl"].Value;
                    cd.CoordName = XN.Attributes["CoordName"].Value;
                    cd.Statue = XN.Attributes["Statue"].Value;
                    cd.PhoneNo = XN.Attributes["PhoneNo"].Value;
                    cd.dataTimes = XN.Attributes["dataTimes"].Value;

                    cdinators.Add(cd);
                }

                return cdinators;
            }
            catch (Exception err)
            {
                //MessageBox.Show("获取值班人员信息失败!失败原因:" + err.Message, "提示信息",
                //            MessageBoxButtons.OK, MessageBoxIcon.Information);
                //Application.Exit();
                return null;
            }
        }


 

        /// <summary>
        /// 添加员工信息数据到存储数据文件
        /// </summary>
        /// <param name="cdinator"></param>
        private void AddCoordinatorToDataFile(Coordinator cdinator)
        {
            try
            {
                xmldoc.Load(docpath);

                XmlNode Foot = xmldoc.SelectSingleNode("foot");
                XmlElement NewCd = xmldoc.CreateElement("Coordinator");
                NewCd.SetAttribute("Id", cdinator.Id);
                NewCd.SetAttribute("ImageUrl", cdinator.CoordPicUrl);
                NewCd.SetAttribute("CoordName", cdinator.CoordName);
                NewCd.SetAttribute("PhoneNo", cdinator.PhoneNo);
                NewCd.SetAttribute("Statue", "4");
                NewCd.SetAttribute("dataTimes", cdinator.dataTimes);

                Foot.AppendChild(NewCd);
                xmldoc.Save(docpath);

                if (!string.IsNullOrEmpty(cdinator.CoordPicUrl))
                {
                    File.Copy(LocalPicUrl, CoordPicUrl, true);//数据存储到配置文件后再上传图片到服务器
                }
           
            }
            catch (Exception err)
            {
                MessageBox.Show("添加员工信息失败!失败原因:" + err.Message, "提示信息",
                       MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

        }

 

 

        /// <summary>
        /// 变更修改的数据到数据文件
        /// </summary>
        /// <param name="cdinator"></param>
        private void ModifyCoordinatorToDataFile(Coordinator cdinator)
        {
            try
            {
                xmldoc.Load(docpath);
                XmlNodeList nodelist = xmldoc.SelectSingleNode("foot").ChildNodes;

                foreach (XmlNode XN in nodelist)
                {
                    if (XN.Attributes["Id"].Value.ToString() == cdinator.Id)
                    {
                        XN.Attributes["CoordName"].Value = cdinator.CoordName;
                        XN.Attributes["PhoneNo"].Value = cdinator.PhoneNo;
                        if (!string.IsNullOrEmpty(CoordPicUrl))
                        {
                            XN.Attributes["ImageUrl"].Value = CoordPicUrl;
                            File.Copy(LocalPicUrl, CoordPicUrl, true);//数据存储到配置文件后再上传图片到服务器
                            File.Delete(cdinator.CoordPicUrl);//删除旧图片 引发了线程问题,图片在另一个进程中使用(已解决)
                        }

                        xmldoc.Save(docpath);
                    }
                }
            }
            catch (Exception err)
            {
                MessageBox.Show("修改员工信息失败!失败原因:" + err.Message, "提示信息",
                      MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

 

 

        /// <summary>
        /// 从值班员工表中删除指定员工的信息
        /// </summary>
        /// <param name="cdinator">选中员工的信息</param>
        private void DeleteCoordinator(Coordinator cdinator)
        {
            try
            {
                xmldoc.Load(docpath);
                XmlNode foot = xmldoc.SelectSingleNode("foot");
                XmlNodeList nodelist = xmldoc.SelectSingleNode("foot").ChildNodes;
                foreach (XmlNode XN in nodelist)
                {
                    if (XN.Attributes["Id"].Value.ToString() == cdinator.Id)
                    {
                        if (!string.IsNullOrEmpty( cdinator.CoordPicUrl))
                        {    
                            File.Delete(cdinator.CoordPicUrl);//删除员工图片
                        }
                     
                        foot.RemoveChild(XN);
                    }
                }

                xmldoc.Save(docpath);

            }
            catch (Exception err)
            {
                MessageBox.Show("删除员工信息失败!失败原因:" + err.Message, "提示信息",
                      MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
   
        }
    }

 

0 0