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);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM