当前位置: 首页 > news >正文

xml 相关操作

    注释写的足够清楚 。嗯 ,以后注释一定要写好 ,最主要是的不知道什么时候会用 ,完全可以第一时间内就看得懂 。

       

        /// <summary>
        /// 向xml文件添加节点信息
        /// </summary>
        /// <param name="xmlPath"></param>
        public static bool AddXmlNodeInformation(string xmlPath, string link, string title)
        {
            try
            {
                //定义并从xml文件中加载节点(根节点)
                XElement root = XElement.Load(xmlPath);

                //定义并从xml文件中加载节点(根节点)
                IEnumerable<XElement> targetNodes = from target in XElement.Load(xmlPath).Descendants("menu")
                                                    select target;
                int count = 0;
                foreach (XElement node in targetNodes)
                {
                    if (node.HasElements)
                    {
                        count = Convert.ToInt32(node.LastNode.ToString().Substring(7, 1));
                    }
                    else
                    {
                        count = 0;
                    }
                }
                //定义一个新节点
                XElement newNode = new XElement("m", new XAttribute("id", count + 1),
                                                                new XElement("link", link),
                                                                new XElement("title", title)
                                                                );
                //将此新节点添加到根节点下
                root.Element("menu").Add(newNode);
                //保存对xml的更改操作
                root.Save(xmlPath);
                return true;
            }
            catch (Exception ex)
            {
                return false;
                throw new Exception("向xml文件添加节点信息失败!" + ex.Message);
            }
        }

        /// <summary>
        ///  遍历xml文件的节点信息
        /// </summary>
        /// <param name="xmlPath"></param>
        public static List<string> GetXmlNodeInformation(string xmlPath)
        {
            List<string> list = new List<string>();
            string menu = string.Empty;
            try
            {
                //定义并从xml文件中加载节点(根节点)
                XElement rootNode = XElement.Load(xmlPath);

                //查询语句: 获得根节点下menu子节点(此时的子节点可以跨层次:孙节点、重孙节点......)
                IEnumerable<XElement> targetNodes = from target in rootNode.Descendants("menu").Descendants("m")
                                                    select target;
                foreach (XElement node in targetNodes)
                {

                    string id = node.Attribute("id").Value;
                    string title = node.Element("title").Value;
                    string link = node.Element("link").Value;
                    menu = string.Concat(id, "$", title, "$", link);
                    list.Add(menu);
                }
                return list;
            }
            catch (Exception ex)
            {
                throw new Exception("查询menu结点信息失败!" + ex.Message);
            }
        }

        /// <summary>
        /// 查询attribute属性
        /// </summary>
        /// <param name="xmlPath"></param>
        /// <returns></returns>
        public static string GetAttribute(string xmlPath)
        {
            try
            {
                string menu = string.Empty;
                //定义并从xml文件中加载节点(根节点)
                XElement rootNode = XElement.Load(xmlPath);

                //查询语句: 获得根节点下menu子节点(此时的子节点可以跨层次:孙节点、重孙节点......)
                IEnumerable<XElement> targetNodes = from target in rootNode.Descendants("menu")
                                                    select target;
                foreach (XElement node in targetNodes)
                {
                    menu = node.Attribute("value").Value;
                }
                return menu;
            }
            catch (Exception ex)
            {
                throw new Exception("查询attribute属性失败!" + ex.Message);
            }
        }

        /// <summary>
        /// 修改attribute属性
        /// </summary>
        /// <param name="xmlPath"></param>
        /// <param name="attribute"></param>
        /// <returns></returns>
        public static bool ModifyAttribute(string xmlPath, string attribute)
        {
            try
            {
                //定义并从xml文件中加载节点(根节点)
                XElement rootNode = XElement.Load(xmlPath);

                //将获得的节点集合中的每一个节点依次从它相应的父节点中删除
                rootNode.Element("menu").Attribute("value").SetValue(attribute);
                rootNode.Save(xmlPath);
                return true;
            }
            catch (Exception ex)
            {
                return false;
                throw new Exception("修改attribute属性失败!" + ex.Message);
            }
        }

        /// <summary>
        /// 修改xml文件的节点信息
        /// </summary>
        /// <param name="xmlPath"></param>
        public static bool ModifyXmlNodeInformation(string xmlPath, string id, string link, string title)
        {
            try
            {
                //定义并从xml文件中加载节点(根节点)
                XElement rootNode = XElement.Load(xmlPath);
                //查询语句: 获取ID属性值等于id的所有User节点(或条件用"||"符号连接)

                IEnumerable<XElement> targetNodes = from target in rootNode.Descendants("menu")
                                                    where target.Attribute("ID").Value == id
                                                    select target;
                //遍历所获得的目标节点(集合)
                foreach (XElement node in targetNodes)
                {
                    //将 节点的InnerText设置
                    node.Element("link").SetValue(link);
                    node.Element("title").SetValue(title);
                }
                //保存对xml的更改操作
                rootNode.Save(xmlPath);
                return true;
            }
            catch (Exception ex)
            {
                return false;
                throw new Exception("修改xml文件的节点信息失败!" + ex.Message);
            }
        }

        /// <summary>
        /// 修改xml文件的节点信息
        /// </summary>
        /// <param name="xmlPath"></param>
        public static bool ModifyXmlNodeInformation(string xmlPath, List<string> list)
        {
            try
            {
                //定义并从xml文件中加载节点(根节点)
                XElement rootNode = XElement.Load(xmlPath);

                //将获得的节点集合中的每一个节点依次从它相应的父节点中删除
                rootNode.Element("menu").Nodes().Remove();
                XElement newNode = null;
                for (int i = 0; i < list.Count; i++)
                {
                    string[] strarr = list[i].Split('$');
                    newNode = new XElement("m", new XAttribute("id", i),
                                                              new XElement("link", strarr[1]),
                                                              new XElement("title", strarr[0])

                  );
                    //将此新节点添加到根节点下
                    rootNode.Element("menu").Add(newNode);
                }

                //保存对xml的更改操作
                rootNode.Save(xmlPath);
                return true;
            }
            catch (Exception ex)
            {
                return false;
                throw new Exception("修改xml文件的节点信息失败!" + ex.Message);
            }
        }

        /// <summary>
        /// 删除指定xml文件的节点信息
        /// </summary>
        /// <param name="xmlPath"></param>
        public static bool DeleteXmlNodeInformation(string xmlPath, string id)
        {
            try
            {
                //定义并从xml文件中加载节点(根节点)
                XElement rootNode = XElement.Load(xmlPath);
                //查询语句: 获取ID属性值等于"XXXX"的所有User节点
                IEnumerable<XElement> nodes = rootNode.Element("menu").Elements();
                foreach (var item in nodes)
                {
                    if (item.Attribute("id").Value == id)
                    {
                        item.Remove();
                        break;
                    }
                }
                //保存对xml的更改操作
                rootNode.Save(xmlPath);
                return true;
            }
            catch (Exception ex)
            {
                return false;
                throw new Exception("删除指定xml文件的节点信息失败!" + ex.Message);
            }
        }

  

转载于:https://www.cnblogs.com/lelese7en/archive/2012/09/28/2707088.html

相关文章:

  • activity添加切换动画之后出现的黑色背景问题
  • GNU make manual 翻译( 一百五十八)
  • Linux自学笔记——nginx详解
  • POJ 1722 DP
  • centos搭建ssh
  • Direct2D入门
  • Mina2.0框架源码剖析(二)
  • 64位ubuntu下安装32位jdk
  • response.setHeader()的用法
  • PCIE BAR空间
  • HDU5115:Dire Wolf——题解+翻译
  • JS常用代码
  • [iOS]中字体样式设置 API
  • 20个Jquery表单插件
  • MAC上Git安装与GitHub基本使用
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • emacs初体验
  • FineReport中如何实现自动滚屏效果
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Mithril.js 入门介绍
  • React as a UI Runtime(五、列表)
  • ReactNative开发常用的三方模块
  • spring学习第二天
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 新手搭建网站的主要流程
  • 一个项目push到多个远程Git仓库
  • ​iOS实时查看App运行日志
  • ​secrets --- 生成管理密码的安全随机数​
  • #### go map 底层结构 ####
  • ${ }的特别功能
  • (27)4.8 习题课
  • (42)STM32——LCD显示屏实验笔记
  • (BFS)hdoj2377-Bus Pass
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (初研) Sentence-embedding fine-tune notebook
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)计算机毕业设计大学生兼职系统
  • (转)为C# Windows服务添加安装程序
  • (转载)(官方)UE4--图像编程----着色器开发
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .NET delegate 委托 、 Event 事件,接口回调
  • .net操作Excel出错解决
  • @KafkaListener注解详解(一)| 常用参数详解
  • @RequestParam,@RequestBody和@PathVariable 区别
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?
  • [AS3]URLLoader+URLRequest+JPGEncoder实现BitmapData图片数据保存
  • [docker] Docker的数据卷、数据卷容器,容器互联
  • [emacs] CUA的矩形块操作很给力啊
  • [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated c
  • [Foreman]解决Unable to find internal system admin account
  • [jobdu]不用加减乘除做加法
  • [LeetCode] Ransom Note 赎金条