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配置文件。
代码:
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);