zoukankan      html  css  js  c++  java
  • C#中读写Xml配置文件常用方法工具类

    场景

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

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

    1.读取XML配置文。

    2.写入XML配置文件。

    3.匹配 XPath 表达式的第一个 XmlNode。

    4.获取节点text。

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

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

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

    实现

    在项目目录下新建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);
  • 相关阅读:
    vector存入共享内存(了解)
    vector内存分配
    关于传值的小问题
    c++11 lambda(匿名函数)
    std::function,std::bind复习
    项目分析(人物上线消息)
    mongo 1067错误
    随笔1
    随笔
    交换机的体系结构和各部件说明
  • 原文地址:https://www.cnblogs.com/badaoliumangqizhi/p/11525950.html
Copyright © 2011-2022 走看看