C#简单操作XML

类文件:

 class OperatorXML
    { 
        /// <summary>
        /// 确定资源文件路径,Resource为自己创建的目录
        /// </summary>
        private string filePath = @"..\..\Resources\XMLFile.xml";
        /// <summary>
        /// 
        /// </summary>
        private XDocument xDoc ;

        /// <summary>
        /// 当窗体加载时, 遍历所有节点
        /// </summary>
        public List<Desktop> LoadNode()
        {
            List<Desktop> desktop = new List<Desktop>();
            try
            {
                this.xDoc = XDocument.Load(filePath);//加载xml文件
                XElement root = xDoc.Root;  //获取根节点

                //遍历所有节点
                foreach (XElement elem in xDoc.Root.Elements("Desktop"))
                { 
                    desktop.Add(new Desktop(elem.Attribute("IpAddr").Value,elem.Attribute("Alias").Value, elem.Attribute("Pwd").Value,elem.Attribute("UserName").Value, elem.Attribute("Description").Value, new Guid(elem.Attribute("Id").Value)));
                }
                
            }
            catch(Exception e)
            {
                System.Windows.Forms.MessageBox.Show(e.ToString());
            }
            return desktop;
        }

        /// <summary>
        /// 遍历所有节点, 获取节点的别名
        /// </summary>
        /// <returns></returns>
        public List<string> GetNodeName()
        {
            List<string> nodeName = new List<string>();
            try
            {
                this.xDoc = XDocument.Load(filePath);//加载xml文件
                XElement root = xDoc.Root;  //获取根节点

                //遍历所有节点
                foreach (XElement elem in xDoc.Root.Elements("Desktop"))
                {
                    nodeName.Add(elem.Attribute("Alias").Value);
                }
                
            }
            catch (Exception e)
            {
                System.Windows.Forms.MessageBox.Show(e.ToString());
            }
            return nodeName;
        }


        /// <summary>
        /// 根据指定的id获取对应的节点属性
        /// </summary>
        /// <param name="id">指定的id</param>
        /// <returns></returns>
        public Desktop GetDesktop(string id)
        {
            this.xDoc = XDocument.Load(filePath);//加载xml文件
            XElement root = xDoc.Root;  //获取根节点
            Desktop desktop = null;
            //遍历所有节点
            foreach (XElement elem in xDoc.Root.Elements("Desktop"))
            {
                if (elem.Attribute("Id").Value == id)
                {
                    desktop = new Desktop();
                    desktop.IpAddr = elem.Attribute("IpAddr").Value;
                    desktop.Alias = elem.Attribute("Alias").Value;
                    desktop.UserName = elem.Attribute("UserName").Value;
                    desktop.Pwd = elem.Attribute("Pwd").Value;
                    desktop.Description = elem.Attribute("Description").Value;
                    desktop.Id = new Guid(elem.Attribute("Id").Value);
                }
            }
            return desktop;
        }

        /// <summary>
        /// 添加一个节点
        /// </summary>
        public  void AddSave(Desktop desktop)
        {
            try
            {
                this.xDoc = XDocument.Load(this.filePath);
                
                this.xDoc.Root.Add(new XElement("Desktop",
                                    new XAttribute("IpAddr",desktop.IpAddr),
                                     new XAttribute("UserName", desktop.UserName),
                                     new XAttribute("Description", desktop.Description),
                                     new XAttribute("Pwd",desktop.Pwd),
                                     new XAttribute("Alias", desktop.Alias),
                                     new XAttribute("Id", desktop.Id)
                                    ));
                this.xDoc.Save(this.filePath);
            }
            catch(Exception e)
            {
                System.Windows.Forms.MessageBox.Show(e.ToString());
            }
        }

        /// <summary>
        /// 根据ID来修改某个节点
        /// </summary>
        /// <param name="id"></param>
        public void modifyNode(Desktop desktop)
        {
            this.xDoc = XDocument.Load(this.filePath);
            foreach (XElement elem in xDoc.Root.Elements("Desktop"))
            {
                if (elem.Attribute("Id").Value == desktop.Id.ToString())
                {
                    elem.SetAttributeValue("IpAddr", desktop.IpAddr);
                    elem.SetAttributeValue("Alias", desktop.Alias);
                    elem.SetAttributeValue("UserName", desktop.UserName);
                    elem.SetAttributeValue("Pwd", desktop.Pwd);
                    elem.SetAttributeValue("Description", desktop.Description);
                }
            }
            this.xDoc.Save(this.filePath);
        }

        /// <summary>
        /// 删除一个节点并保存
        /// </summary>
        /// <param name="desktop"></param>
        public  bool  RemoveSave(string id)
        {
            bool isOK = false;
             this.xDoc = XDocument.Load(this.filePath);
             foreach (XElement elem in xDoc.Root.Elements("Desktop"))
             {
                 if (elem.Attribute("Id").Value == id) 
                 {
                     elem.Remove();
                     this.xDoc.Save(this.filePath);
                     isOK = true;
                     break;
                 }
             }
            return isOK;
        }
    }

 

xml文件示例(XMLFile.xml):

<?xml version="1.0" encoding="utf-8"?>
<Root>
  <Desktop IpAddr="host1" UserName="administrator" Description="独立服务器" Pwd="pwd" Alias="礼仪" Id="dfbc7b37-b5b3-4c36-a9c4-64302d824c34" />
  <Desktop IpAddr="host2" UserName="administrator" Description="咖啡独立服务器" Pwd="pwsd" Alias="季卡" Id="80da53e6-5d84-4dc3-bb3f-90fbf0174e06" />
</Root>

 

posted on 2017-07-21 11:22  印子  阅读(163)  评论(0编辑  收藏  举报

导航