架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 26718|回复: 0

[资料] c#操作xml的xmlhelper帮助类

[复制链接]
发表于 2016-6-20 11:15:08 | 显示全部楼层 |阅读模式
QQ截图20160620111242.jpg

xml如下:

<?xml version="1.0" encoding="utf-8" ?>
<root>
  <!--IP-->
  <ip>127.0.0.1</ip>
  <!--端口-->
  <port>1995</port>
</root>


xmlhelp如下:

  1. /// <summary>
  2.     /// Xml的操作公共类
  3.     /// </summary>   
  4.     public class XmlHelper
  5.     {
  6.         #region 字段定义
  7.         /// <summary>
  8.         /// XML文件的物理路径
  9.         /// </summary>
  10.         private string _filePath = string.Empty;
  11.         /// <summary>
  12.         /// Xml文档
  13.         /// </summary>
  14.         private XmlDocument _xml;
  15.         /// <summary>
  16.         /// XML的根节点
  17.         /// </summary>
  18.         private XmlElement _element;
  19.         #endregion

  20.         #region 构造方法
  21.         /// <summary>
  22.         /// 实例化XmlHelper对象
  23.         /// </summary>
  24.         /// <param name="xmlFilePath">Xml文件的绝对路径</param>
  25.         public XmlHelper(string xmlFilePath)
  26.         {
  27.             //获取XML文件的绝对路径
  28.             _filePath = xmlFilePath;
  29.         }
  30.         #endregion

  31.         #region 创建XML的根节点
  32.         /// <summary>
  33.         /// 创建XML的根节点
  34.         /// </summary>
  35.         private void CreateXMLElement()
  36.         {

  37.             //创建一个XML对象
  38.             _xml = new XmlDocument();

  39.             if (System.IO.File.Exists(_filePath))
  40.             {
  41.                 //加载XML文件
  42.                 _xml.Load(this._filePath);
  43.             }

  44.             //为XML的根节点赋值
  45.             _element = _xml.DocumentElement;
  46.         }
  47.         #endregion

  48.         #region 获取指定XPath表达式的节点对象
  49.         /// <summary>
  50.         /// 获取指定XPath表达式的节点对象
  51.         /// </summary>        
  52.         /// <param name="xPath">XPath表达式,
  53.         /// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"
  54.         /// 范例2: @"Table[USERNAME='a']" , []表示筛选,USERNAME是Table下的一个子节点.
  55.         /// 范例3: @"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性.
  56.         /// </param>
  57.         public XmlNode GetNode(string xPath)
  58.         {
  59.             //创建XML的根节点
  60.             CreateXMLElement();

  61.             //返回XPath节点
  62.             return _element.SelectSingleNode(xPath);
  63.         }
  64.         #endregion

  65.         #region 获取指定XPath表达式节点的值
  66.         /// <summary>
  67.         /// 获取指定XPath表达式节点的值
  68.         /// </summary>
  69.         /// <param name="xPath">XPath表达式,
  70.         /// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"
  71.         /// 范例2: @"Table[USERNAME='a']" , []表示筛选,USERNAME是Table下的一个子节点.
  72.         /// 范例3: @"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性.
  73.         /// </param>
  74.         public string GetValue(string xPath)
  75.         {
  76.             //创建XML的根节点
  77.             CreateXMLElement();

  78.             //返回XPath节点的值
  79.             return _element.SelectSingleNode(xPath).InnerText;
  80.         }
  81.         #endregion

  82.         #region 获取指定XPath表达式节点的属性值
  83.         /// <summary>
  84.         /// 获取指定XPath表达式节点的属性值
  85.         /// </summary>
  86.         /// <param name="xPath">XPath表达式,
  87.         /// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"
  88.         /// 范例2: @"Table[USERNAME='a']" , []表示筛选,USERNAME是Table下的一个子节点.
  89.         /// 范例3: @"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性.
  90.         /// </param>
  91.         /// <param name="attributeName">属性名</param>
  92.         public string GetAttributeValue(string xPath, string attributeName)
  93.         {
  94.             //创建XML的根节点
  95.             CreateXMLElement();

  96.             //返回XPath节点的属性值
  97.             return _element.SelectSingleNode(xPath).Attributes[attributeName].Value;
  98.         }
  99.         #endregion

  100.         #region 新增节点
  101.         /// <summary>
  102.         /// 1. 功能:新增节点。
  103.         /// 2. 使用条件:将任意节点插入到当前Xml文件中。
  104.         /// </summary>        
  105.         /// <param name="xmlNode">要插入的Xml节点</param>
  106.         public void AppendNode(XmlNode xmlNode)
  107.         {
  108.             //创建XML的根节点
  109.             CreateXMLElement();

  110.             //导入节点
  111.             XmlNode node = _xml.ImportNode(xmlNode, true);

  112.             //将节点插入到根节点下
  113.             _element.AppendChild(node);
  114.         }

  115.         /// <summary>
  116.         /// 1. 功能:新增节点。
  117.         /// 2. 使用条件:将DataSet中的第一条记录插入Xml文件中。
  118.         /// </summary>        
  119.         /// <param name="ds">DataSet的实例,该DataSet中应该只有一条记录</param>
  120.         public void AppendNode(DataSet ds)
  121.         {
  122.             //创建XmlDataDocument对象
  123.             XmlDataDocument xmlDataDocument = new XmlDataDocument(ds);

  124.             //导入节点
  125.             XmlNode node = xmlDataDocument.DocumentElement.FirstChild;

  126.             //将节点插入到根节点下
  127.             AppendNode(node);
  128.         }
  129.         #endregion

  130.         #region 删除节点
  131.         /// <summary>
  132.         /// 删除指定XPath表达式的节点
  133.         /// </summary>        
  134.         /// <param name="xPath">XPath表达式,
  135.         /// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"
  136.         /// 范例2: @"Table[USERNAME='a']" , []表示筛选,USERNAME是Table下的一个子节点.
  137.         /// 范例3: @"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性.
  138.         /// </param>
  139.         public void RemoveNode(string xPath)
  140.         {
  141.             //创建XML的根节点
  142.             CreateXMLElement();

  143.             //获取要删除的节点
  144.             XmlNode node = _xml.SelectSingleNode(xPath);

  145.             //删除节点
  146.             _element.RemoveChild(node);
  147.         }
  148.         #endregion //删除节点

  149.         #region 保存XML文件
  150.         /// <summary>
  151.         /// 保存XML文件
  152.         /// </summary>        
  153.         public void Save()
  154.         {
  155.             //创建XML的根节点
  156.             CreateXMLElement();

  157.             //保存XML文件
  158.             _xml.Save(this._filePath);
  159.         }
  160.         #endregion //保存XML文件

  161.         #region 静态方法

  162.         #region 创建根节点对象
  163.         /// <summary>
  164.         /// 创建根节点对象
  165.         /// </summary>
  166.         /// <param name="xmlFilePath">Xml文件的绝对路径</param>        
  167.         private static XmlElement CreateRootElement(string xmlFilePath)
  168.         {
  169.             //定义变量,表示XML文件的绝对路径
  170.             string filePath = "";

  171.             //获取XML文件的绝对路径
  172.             filePath = xmlFilePath;

  173.             //创建XmlDocument对象
  174.             XmlDocument xmlDocument = new XmlDocument();
  175.             //加载XML文件
  176.             xmlDocument.Load(filePath);

  177.             //返回根节点
  178.             return xmlDocument.DocumentElement;
  179.         }
  180.         #endregion

  181.         #region 获取指定XPath表达式节点的值
  182.         /// <summary>
  183.         /// 获取指定XPath表达式节点的值
  184.         /// </summary>
  185.         /// <param name="xmlFilePath">Xml文件的相对路径</param>
  186.         /// <param name="xPath">XPath表达式,
  187.         /// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"
  188.         /// 范例2: @"Table[USERNAME='a']" , []表示筛选,USERNAME是Table下的一个子节点.
  189.         /// 范例3: @"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性.
  190.         /// </param>
  191.         public static string GetValue(string xmlFilePath, string xPath)
  192.         {
  193.             //创建根对象
  194.             XmlElement rootElement = CreateRootElement(xmlFilePath);

  195.             //返回XPath节点的值
  196.             return rootElement.SelectSingleNode(xPath).InnerText;
  197.         }
  198.         #endregion

  199.         #region 获取指定XPath表达式节点的属性值
  200.         /// <summary>
  201.         /// 获取指定XPath表达式节点的属性值
  202.         /// </summary>
  203.         /// <param name="xmlFilePath">Xml文件的相对路径</param>
  204.         /// <param name="xPath">XPath表达式,
  205.         /// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"
  206.         /// 范例2: @"Table[USERNAME='a']" , []表示筛选,USERNAME是Table下的一个子节点.
  207.         /// 范例3: @"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性.
  208.         /// </param>
  209.         /// <param name="attributeName">属性名</param>
  210.         public static string GetAttributeValue(string xmlFilePath, string xPath, string attributeName)
  211.         {
  212.             //创建根对象
  213.             XmlElement rootElement = CreateRootElement(xmlFilePath);

  214.             //返回XPath节点的属性值
  215.             return rootElement.SelectSingleNode(xPath).Attributes[attributeName].Value;
  216.         }
  217.         #endregion

  218.         #endregion

  219.         public static void SetValue(string xmlFilePath, string xPath, string newtext)
  220.         {
  221.             //string path = SysHelper.GetPath(xmlFilePath);
  222.             //var queryXML = from xmlLog in xelem.Descendants("msg_log")
  223.             //               //所有名字为Bin的记录
  224.             //               where xmlLog.Element("user").Value == "Bin"
  225.             //               select xmlLog;

  226.             //foreach (XElement el in queryXML)
  227.             //{
  228.             //    el.Element("user").Value = "LiuBin";//开始修改
  229.             //}
  230.             //xelem.Save(path);
  231.         }
  232.     }
复制代码


调用方法:

  1. XmlHelper xml = new XmlHelper(Application.StartupPath + @"\Config.xml");
  2. string ip = xml.GetValue("//root//ip");
复制代码






上一篇:开机提示invalid partition table的解决方案
下一篇:System error 5 has occurred. Access is denied.
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2026-7-18 14:04

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表