場景 有時需要使用配置文件保存一些配置的屬性,使其在下次打開時設置仍然生效。 這裡以對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配置文件。
代碼:
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);