场景
有时需要使用配置文件保存一些配置的属性,使其在下次打开时设置仍然生效。
这里以对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);