using System.Xml;
using System.Data;namespace DotNet.Utilities
{/// <summary>/// Xml的操作公共类/// </summary>    public class XmlHelper{#region 字段定义/// <summary>/// XML文件的物理路径/// </summary>private string _filePath = string.Empty;/// <summary>/// Xml文档/// </summary>private XmlDocument _xml;/// <summary>/// XML的根节点/// </summary>private XmlElement _element;#endregion#region 构造方法/// <summary>/// 实例化XmlHelper对象/// </summary>/// <param name="xmlFilePath">Xml文件的相对路径</param>public XmlHelper(string xmlFilePath){//获取XML文件的绝对路径_filePath = SysHelper.GetPath(xmlFilePath);}#endregion#region 创建XML的根节点/// <summary>/// 创建XML的根节点/// </summary>private void CreateXMLElement(){//创建一个XML对象_xml = new XmlDocument();if (DirFile.IsExistFile(_filePath)){//加载XML文件_xml.Load(this._filePath);}//为XML的根节点赋值_element = _xml.DocumentElement;}#endregion#region 获取指定XPath表达式的节点对象/// <summary>/// 获取指定XPath表达式的节点对象/// </summary>        /// <param name="xPath">XPath表达式,/// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"/// 范例2: @"Table[USERNAME='a']" , []表示筛选,USERNAME是Table下的一个子节点./// 范例3: @"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性./// </param>public XmlNode GetNode(string xPath){//创建XML的根节点CreateXMLElement();//返回XPath节点return _element.SelectSingleNode(xPath);}#endregion#region 获取指定XPath表达式节点的值/// <summary>/// 获取指定XPath表达式节点的值/// </summary>/// <param name="xPath">XPath表达式,/// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"/// 范例2: @"Table[USERNAME='a']" , []表示筛选,USERNAME是Table下的一个子节点./// 范例3: @"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性./// </param>public string GetValue(string xPath){//创建XML的根节点CreateXMLElement();//返回XPath节点的值return _element.SelectSingleNode(xPath).InnerText;}#endregion#region 获取指定XPath表达式节点的属性值/// <summary>/// 获取指定XPath表达式节点的属性值/// </summary>/// <param name="xPath">XPath表达式,/// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"/// 范例2: @"Table[USERNAME='a']" , []表示筛选,USERNAME是Table下的一个子节点./// 范例3: @"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性./// </param>/// <param name="attributeName">属性名</param>public string GetAttributeValue(string xPath, string attributeName){//创建XML的根节点CreateXMLElement();//返回XPath节点的属性值return _element.SelectSingleNode(xPath).Attributes[attributeName].Value;}#endregion#region 新增节点/// <summary>/// 1. 功能:新增节点。/// 2. 使用条件:将任意节点插入到当前Xml文件中。/// </summary>        /// <param name="xmlNode">要插入的Xml节点</param>public void AppendNode(XmlNode xmlNode){//创建XML的根节点CreateXMLElement();//导入节点XmlNode node = _xml.ImportNode(xmlNode, true);//将节点插入到根节点下_element.AppendChild(node);}/// <summary>/// 1. 功能:新增节点。/// 2. 使用条件:将DataSet中的第一条记录插入Xml文件中。/// </summary>        /// <param name="ds">DataSet的实例,该DataSet中应该只有一条记录</param>public void AppendNode(DataSet ds){//创建XmlDataDocument对象XmlDataDocument xmlDataDocument = new XmlDataDocument(ds);//导入节点XmlNode node = xmlDataDocument.DocumentElement.FirstChild;//将节点插入到根节点下AppendNode(node);}#endregion#region 删除节点/// <summary>/// 删除指定XPath表达式的节点/// </summary>        /// <param name="xPath">XPath表达式,/// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"/// 范例2: @"Table[USERNAME='a']" , []表示筛选,USERNAME是Table下的一个子节点./// 范例3: @"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性./// </param>public void RemoveNode(string xPath){//创建XML的根节点CreateXMLElement();//获取要删除的节点XmlNode node = _xml.SelectSingleNode(xPath);//删除节点_element.RemoveChild(node);}#endregion //删除节点#region 保存XML文件/// <summary>/// 保存XML文件/// </summary>        public void Save(){//创建XML的根节点CreateXMLElement();//保存XML文件_xml.Save(this._filePath);}#endregion //保存XML文件#region 静态方法#region 创建根节点对象/// <summary>/// 创建根节点对象/// </summary>/// <param name="xmlFilePath">Xml文件的相对路径</param>        private static XmlElement CreateRootElement(string xmlFilePath){//定义变量,表示XML文件的绝对路径string filePath = "";//获取XML文件的绝对路径filePath = SysHelper.GetPath(xmlFilePath);//创建XmlDocument对象XmlDocument xmlDocument = new XmlDocument();//加载XML文件xmlDocument.Load(filePath);//返回根节点return xmlDocument.DocumentElement;}#endregion#region 获取指定XPath表达式节点的值/// <summary>/// 获取指定XPath表达式节点的值/// </summary>/// <param name="xmlFilePath">Xml文件的相对路径</param>/// <param name="xPath">XPath表达式,/// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"/// 范例2: @"Table[USERNAME='a']" , []表示筛选,USERNAME是Table下的一个子节点./// 范例3: @"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性./// </param>public static string GetValue(string xmlFilePath, string xPath){//创建根对象XmlElement rootElement = CreateRootElement(xmlFilePath);//返回XPath节点的值return rootElement.SelectSingleNode(xPath).InnerText;}#endregion#region 获取指定XPath表达式节点的属性值/// <summary>/// 获取指定XPath表达式节点的属性值/// </summary>/// <param name="xmlFilePath">Xml文件的相对路径</param>/// <param name="xPath">XPath表达式,/// 范例1: @"Skill/First/SkillItem", 等效于 @"//Skill/First/SkillItem"/// 范例2: @"Table[USERNAME='a']" , []表示筛选,USERNAME是Table下的一个子节点./// 范例3: @"ApplyPost/Item[@itemName='岗位编号']",@itemName是Item节点的属性./// </param>/// <param name="attributeName">属性名</param>public static string GetAttributeValue(string xmlFilePath, string xPath, string attributeName){//创建根对象XmlElement rootElement = CreateRootElement(xmlFilePath);//返回XPath节点的属性值return rootElement.SelectSingleNode(xPath).Attributes[attributeName].Value;}#endregion#endregionpublic static void SetValue(string xmlFilePath, string xPath, string newtext){//string path = SysHelper.GetPath(xmlFilePath);//var queryXML = from xmlLog in xelem.Descendants("msg_log")//               //所有名字为Bin的记录//               where xmlLog.Element("user").Value == "Bin"//               select xmlLog;//foreach (XElement el in queryXML)//{//    el.Element("user").Value = "LiuBin";//开始修改//}//xelem.Save(path);}}
}

C#操作类----XmlHelper相关推荐

  1. C# XML文件操作类XmlHelper

    类的完整代码: using System; using System.Collections; using System.Xml; namespace Keleyi.Com.XmlDAL { publ ...

  2. C#xml创建修改读取删除帮助类XmlHelper.cs

    <strong><span style="color:#ff0000;">[XML帮助类]C#xml创建修改读取删除帮助类XmlHelper.cs < ...

  3. C#:XML操作类--转

    写的一个XML操作类,包括读取/插入/修改/删除. using System; using System.Data; using System.Configuration; using System. ...

  4. XML Helper XML操作类

    写的一个XML操作类,包括读取/插入/修改/删除.转自:http://blog.163.com/sc_g_ruan/blog/static/15032602011510105333868/ using ...

  5. C#:XML操作类 (转)

    写的一个XML操作类,包括读取/插入/修改/删除. using System; using System.Data; using System.Configuration; using System. ...

  6. XML简单操作类、只可操作单行数据(可直接使用)

    写的一个XML操作类,包括读取/插入/修改/删除. using System; using System.Data; using System.Configuration; using System. ...

  7. Java学习总结:41(文件操作类:File)

    Java文件操作类:File 在java.io包中,如果要进行文件自身的操作(例如:创建.删除等),只能依靠java.io.File类完成. File类的常用操作方法 No. 方法 类型 描述 1 p ...

  8. Java学习总结:35(数字操作类)

    Java的数字操作类 一.Math类 Math类是一个专门用来进行数学计算的操作类,它提供了一系列的数学计算方法.在Math类里面提供的一切方法都是static型方法,所以可以直接由类名称进行调用. ...

  9. classlist使用方法_如何通过使用HTML5的classList API在没有jQuery的情况下操作类

    classlist使用方法 by Ayo Isaiah 通过Ayo Isaiah 如何通过使用HTML5的classList API在没有jQuery的情况下操作类 (How to manipulat ...

最新文章

  1. 一键cosplay各路动漫人物!快手的这个BlendGAN火了 | NeurIPS 2021
  2. Linux LVM卷挂载
  3. 多元函数严格凹 海塞矩阵正定_海森矩阵的应用:多元函数极值的判定
  4. 模拟noj——打扑克
  5. 华为系统鸿蒙优势,华为鸿蒙2.0可以替代安卓吗,华为鸿蒙2.0优势在哪
  6. 并行开发的基本概念及两个重要的定律
  7. 潮流设计师创作灵感|是时候设计一下蒸汽波海报了!
  8. 内外网切换软件_不需要软件,用命令简单实现内外网切换指定网段走哪条线路...
  9. 上计算机课玩游戏检讨400字,上网课玩游戏检讨书
  10. CSDN博客积分标准,包括博客勋章等
  11. ECSHOP 大商创 对接易支付接口
  12. 用计算机刻录光盘,笔记本电脑刻录光盘 手把手教你刻录光盘
  13. 网络实用技术--登录--第三方登录--百度第三方登录
  14. 使用Photoshop的总结
  15. Android开发中App演示Gif效果动画的制作过程详讲
  16. scp ? stall ? scp -t ? scp -f ? MTU
  17. DB207S-ASEMI手机快充适配器标配整流桥
  18. 2021年中国乙二醇行业发展现状及进出口状况分析:下游聚酯行业需求拉动乙二醇价格走高 [图]
  19. 51单片机实例5——基于单片机的花样彩灯
  20. 六大景观软件对比 (转) 2007-01-26

热门文章

  1. 设置windows网络连接别名和linux网络连接别名
  2. CentOS7.1 KVM虚拟化之经常使用管理虚拟机命令(3)
  3. 玩转iOS开发:iOS 10 新特性《Thread Sanitizer》
  4. 设置环境变量ANDROID_SDK_HOME有什么用?
  5. 忘记glassfish密码,那就重置密码呗
  6. 【转载】WinCE中的RAM-Based Registry与HIVE-Based Registry
  7. 立冬了 广州还是夏天
  8. 面试官系统精讲Java源码及大厂真题 - 07 List 源码会问哪些面试题
  9. ORA-19809: limit exceeded for recovery files问题解决
  10. CentOS各版本更换国内源,一条指令搞定,超简单!