欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#中读写Xml配置文件常用方法工具类

程序员文章站 2022-08-08 17:56:55
场景 有时需要使用配置文件保存一些配置的属性,使其在下次打开时设置仍然生效。 这里以对xml配置文件的读写为例。 1.读取XML配置文。 2.写入XML配置文件。 3.匹配 XPath 表达式的第一个 XmlNode。 4.获取节点text。 5.根据xPath获取节点个数。 6.根据xPath获取 ......

场景

有时需要使用配置文件保存一些配置的属性,使其在下次打开时设置仍然生效。

这里以对xml配置文件的读写为例。

1.读取xml配置文。

2.写入xml配置文件。

3.匹配 xpath 表达式的第一个 xmlnode。

4.获取节点text。

5.根据xpath获取节点个数。

6.根据xpath获取节点列表。

以上功能只是根据自己实际业务封装的方法,其他方法可以根据自己的实际业务去封装。

实现

在项目目录下新建xml配置文件。

C#中读写Xml配置文件常用方法工具类

 

 

C#中读写Xml配置文件常用方法工具类

代码:

class readxmlconfighelper
    {
        #region 读取xml配置文件
        /// <summary>
        /// 读取xml配置文件  失败返回null
        /// </summary>
        /// <param name="filepath">xml文件路径,相对于bin下debug目录</param>
        /// <returns>xml文档对象</returns>
        public static xmldocument readxml(string filepath)
        {
            //获取可执行文件的路径-即bin目录下的debug或者release目录
            string context = system.windows.forms.application.startuppath;
            //拼接全路径
            string path = string.concat(context, filepath);
            xmldocument xml = new xmldocument();
            //打开一个xml
            try
            {
                xml.load(path);
                return xml;
            }
            catch (exception ex)
            {
                console.writeline(ex.message);
                return null;
            }
        }
        #endregion

        #region 写入xml配置文件
        /// <summary>
        ///  写入xml配置文件 成功返回true 失败返回false
        /// </summary>
        /// <param name="xml">xml对象</param>
        /// <param name="filepath">文件路径</param>
        /// <returns></returns>
        public static boolean  writexml(xmldocument xml , string filepath)
        {
            //获取可执行文件的路径-即bin目录下的debug或者release目录
            string context = system.windows.forms.application.startuppath;
            //拼接全路径
            string path = string.concat(context, filepath);
            try
            {
                xml.save(path);
                return true;
            }
            catch (exception ex)
            {
                console.writeline(ex.message);
                return false;
            }
        }
        #endregion

        #region 匹配 xpath 表达式的第一个 xmlnode
        /// <summary>
        /// 匹配 xpath 表达式的第一个 xmlnode
        /// </summary>
        /// <param name="xml">xml文档对象</param>
        /// <param name="xpath">xpath-路径匹配表达式</param>
        /// <returns>xml节点对象失败返回null</returns>
        public static xmlnode getxmlnode(xmldocument xml,string xpath)
        {
             //选择匹配 xpath 表达式的第一个 xmlnode
            xmlnode xmlnode = xml.selectsinglenode(xpath);
            //读取节点数据
            if (xmlnode != null)
            {
               return xmlnode;
            }
            else 
            {
               return null;
            }
        }
        #endregion

        #region 获取节点text
        /// <summary>
        /// 获取节点text
        /// </summary>
        /// <param name="xml获取节点textnode">节点对象</param>
        /// <returns>返回null则失败,返回""则代表节点内容为空,成功返回节点text</returns>
        public static string getnodetext(xmlnode xmlnode)
        {
            //读取节点数据
            if (xmlnode != null)
            {
                string nodetext = xmlnode.innertext;
                if (nodetext != null)
                {
                    return nodetext;
                }
                else
                {
                    return "";
                }
            }
            else 
            {
               return null;
            }
        }
        #endregion

        #region 根据xpath获取节点个数
        /// <summary>
        /// 根据xpath获取节点个数
        /// </summary>
        /// <param name="xml">xml文档对象</param>
        /// <param name="xpath">xpath表达式</param>
        /// <returns>返回符合xpath的节点数,没有则返回0</returns>
         public static int getcountbyxpath(xmldocument xml,string xpath)
         {
             //读取节点list
             xmlnodelist nodelist = xml.selectnodes(xpath);
             if (nodelist != null)
             {
                 return nodelist.count;
             }
             else
             {
                 return 0;
             }
         }
        #endregion

        #region 根据xpath获取节点列表
         /// <summary>
         ///  根据xpath获取节点列表
         /// </summary>
         /// <param name="xml">xml文档对象</param>
         /// <param name="xpath">xpath表达式</param>
         /// <returns>返回符合xpath的节点列表,失败返回null</returns>
         public static xmlnodelist getnodelistbyxpath(xmldocument xml, string xpath)
         {
             //读取节点list
             xmlnodelist nodelist = xml.selectnodes(xpath);
             if (nodelist != null)
             {
                 return nodelist;
             }
             else
             {
                 return null;
             }
         }
         #endregion

    }

 

调用示例:

xmldocument xml = readxmlconfighelper.readxml(xmlfilepath);

xmlnodelist nodelist = readxmlconfighelper.getnodelistbyxpath(xml, global.radio_group_count_xpath);