c#XML操作类的方法总结
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
#endregion
public 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#XML操作类的方法总结的更多相关文章
- XML Helper XML操作类
写的一个XML操作类,包括读取/插入/修改/删除. using System;using System.Data;using System.Configuration;using System.Web ...
- PHP XML操作类DOMDocument
不得不自已写一个.XML 的操作一直没有用过.下面是自己搜集的XML操作类 DOMDocument相关的内容. 属性: Attributes 存储节点的属性列表(只读) childNodes 存储节点 ...
- C#:XML操作类
写的一个XML操作类,包括读取/插入/修改/删除. using System; using System.Data; using System.Configuration; using System. ...
- 简单的XML操作类
/// <summary> /// XmlHelper 的摘要说明. /// xml操作类 /// </summary> public class XmlHelper { pr ...
- C#常用操作类库三(XML操作类)
/// <summary> /// XmlHelper 的摘要说明. /// xml操作类 /// </summary> public class XmlHelper { pr ...
- hibernate 非xml实体类配置方法!
hibernate 非xml实体类配置方法! 这个是hibernate.cfg.xml配置文件 <?xml version='1.0' encoding='UTF-8'?> <!DO ...
- C#对XML操作类
C#对XML操作类 该类包含了对XML文件的创建,添加,读取,删除,修改等操作 //#define isUnity #if isUnity using UnityEngine; #endif usin ...
- c# xml操作类 比较齐全
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu ...
- PHP XML操作的各种方法解析
PHP提供了一整套的读取 XML文件的方法,很容易的就可以编写基于 XML的脚本程序.本章将要介绍 PHP与 XML的操作方法,并对几个常用的 XML类库做一些简要介绍. XML是一种流行的半结构化文 ...
随机推荐
- Hadoop 的安装及配置
Linux RedHat--CentOs CentOs 6.4 Debian--Ubuntu VMware 虚拟机 关于虚拟机实现上网的解决办法 NAT: 网络地址转换 当 ...
- python3 UnicodeEncodeError: 'gbk' codec can't encode character '\uff70' in position 75267: illegal multibyte sequence
当你爬出想要的数据了,却发现中文是乱码的时候?请你计算下你内心的阴影面积 ! 菊个栗子: #!/usr/bin/env python3# -*- coding: utf-8 -*-import ioi ...
- swift 2.0 用代码写一个简单地UIWebView
其实写一个UIWebView 挺简单的,但是今天就被9.0 的新特性给坑了,不知道上一个项目中有没有遇到这个问题,反正是时间成了,自己也忘记了.今天还是再说一次吧. 我们先简单的创建一个UIWebVi ...
- 小米wifi局域网下播放硬盘影片使用方法
因为家里没开网,看视频都要缓存到手机上. 后来听说小米wifi可以做为一个局域网服务器来用,没忍住就买了一个. 但是下载app之后才发现被坑. 小米路由器需要登录帐号之后才可以使用,而且每次开启都要登 ...
- Fiddler教程【转】
阅读目录 Fiddler的基本介绍 Fiddler的工作原理 同类的其它工具 Fiddler如何捕获Firefox的会话 Fiddler如何捕获HTTPS会话 Fiddler的基本界面 Fiddler ...
- css3动画animate
CSS3 动画 通过 CSS3,我们能够创建动画,这可以在许多网页中取代动画图片.Flash 动画以及 JavaScript. @keyframes 定义动画关键帧: @keyframes anima ...
- [转]部署Let’s Encrypt免费SSL证书&&自动续期
最近公司网站要用https,从自己摸索到找到国内的免费证书到选购正式的收费证书,最后老板说:太贵!不要.一脸懵逼的听老板提到Let's Encrypt证书,没办法,用呗.之前是有一些了解,国外发布的一 ...
- 解读Java内部类
一.基本概念: 顾名思义,内部类存在于外部类当中,依附于外部类.就像眼睛和脑袋的关系一样. 二.几点说明: 1.内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以 ...
- Oracle11G卸载教程
用Oracle自带的卸载程序不能从根本上卸载Oracle,从而为下次的安装留下隐患,那么怎么才能完全卸载Oracle呢?那就是直接注册表清除,步骤如下: 1. 开始->设置->控制面板-& ...
- iOS回顾笔记( 01 )
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...