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);
        }}
}

转载于:https://www.cnblogs.com/starksoft/p/3935529.html

C#XmlHelper操作Xml文档的帮助类相关推荐

  1. 【Qt】DOM创建和操作XML文档

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 创建XML文档 04. 读取XML文档 05. 增加XML节点 06. 查找.删除.更新XML文档 07. 附录 01. ...

  2. [Qt教程] 第28篇 XML(二)使用DOM创建和操作XML文档

    [Qt教程] 第28篇 XML(二)使用DOM创建和操作XML文档 楼主  发表于 2013-5-21 22:00:51 | 查看: 475| 回复: 0 使用DOM创建和操作XML文档 版权声明 该 ...

  3. VBS操作XML文档,拷贝结点 (转)

    VBS操作XML文档,拷贝结点 (转) Dim xmlDoc,xmlRoot,xmlNode,lastNode,newNode Dim doc,docRoot,i,flag Dim strNodeNa ...

  4. 操作xml文档的常用方式

    1.操作XML文档的两种常用方式: 1)使用XmlReader类和XmlWriter类操作 XmlReader是基于数据流的,占用极少的内存,是只读方式的,所以速度极快.只能采用遍历的模式查找数据节点 ...

  5. xmlDocument来操作xml文档

    它的作用是解析xml文档,将其转换为对象,使你可以在程序中对其操作 例如如下的xml文档: <?xml version="1.0" encoding="utf-8& ...

  6. 使用Libxml2操作XML文档

    一.Libxml2介绍: Libxml2 是一个xml的c语言版的解析器,本来是为Gnome项目开发的工具,是一个基于MIT License的免费开源软件.它除了支持c语言版以外,还支持c++.PHP ...

  7. 第十三章、C#操作XML文档(XmlDocument、XmlNode、XmlAttribute、SelectSingleNode、SelectNodes、XmlNodeList)...

    XML文档是一种通用的文档,这种文档既可以用.config作为后缀也可以用.xml作为后缀.XML文档主要由元素节点和节点的属性共同构成的.它有且仅有一个根节点,其他的节点全部都是根节点的子节点或者子 ...

  8. C#操作xml文档,cuid,dategridview显示数据

    界面 //所有的数据全部在集合中             //dgv控件绑定List集合,List集合中有User类的对象,对象里有属性,把属性绑定到没列的数据上             dgv.Da ...

  9. LINQ to XML 操作XML文档

    使用 XDocument 对象的 Element 方法,获取制定层次结构中指定一个元素的值 public void MyDocElement(){XDocument xdoc = XDocument. ...

  10. 使用JAXP对xml文档进行DOM解析基础

    XML解析方式分为两种:dom和sax         dom:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种方式.        sax ...

最新文章

  1. 年末回顾:2021年 AI 领域十大研究趋势及必读论文
  2. Linux下的一些问题收集及解决方法(二)
  3. android studio初始化设置,Android studio 初始设置
  4. GAN 的推导、证明与实现。
  5. Jquery mobile 解决IOS9selectli闪退问题
  6. ubuntu 14.04配置lamp粗略
  7. mt6761v/cbb处理器相当于骁龙多少?_三星S21骁龙版首个跑分成绩出炉 骁龙875或非正式名称...
  8. arm 环境下安装selenium+chrome
  9. AutoCAD-自定义shx
  10. 牛人面对面|专访Testin(云测)总裁徐琨
  11. 哈夫曼压缩与解压缩(c语言版)
  12. java中13%(-3)_Java13版本特性【一文了解】
  13. hyperv怎么复制文件到linux,Hyper-V快速复制虚拟机
  14. win10 下Adobe Reader XI闪退问题解决
  15. ansys怎么合并体_ANSYS梁体组合连接计算方法的讨论
  16. 统计手机号耗费的总上行流量、下行流量、总流量(序列化)
  17. 团队大事件-团队历程-团队记录~
  18. LaTeX中定义新命令和环境
  19. (47)【漏洞发现】漏扫工具合集、WAF绕过分类
  20. css预处理器sass/scss入门

热门文章

  1. Linux 内存管理之 SLUB分配器(5):slub初始化过程
  2. Linux音频驱动-WAV文件格式分析
  3. java使用泛型_Java 泛型
  4. 漫画:Bitmap算法
  5. freeswitch被叫忙处理
  6. 寻找大富翁(堆排序)
  7. python字典常见操作
  8. 【紫书第五章】String、结构体、部分STL的常见用法
  9. mysql提高count_mysql count提高方法总结
  10. 设计递归算法,删除不带头结点的单链表L中所有值为X的结点