c# xml操作类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Xml;
using System.IO;
namespace XML.Helper
{
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
public xmlHelper()
{
//
}
/// <summary>
/// 给xml文档路径赋值
/// </summary>
/// <param name="xmlFilePath"></param>
public xmlHelper(string xmlFilePath)
{
_FilePath = xmlFilePath;
}
/// <summary>
/// 获取指定路径节点
/// </summary>
/// <param name="xPath"></param>
/// <returns></returns>
public static XmlNode GetXmlNode(string xmlFileName, string xPath)
{
XmlDocument xmldocument = new XmlDocument();
//加载xml文档
xmldocument.LoadXml(xmlFileName);
try
{
XmlNode xmlnode = xmldocument.SelectSingleNode(xPath);
return xmlnode;
}
catch
{
return null;
}
}
/// <summary>
/// 获取指定路径节点下孩子节点列表
/// </summary>
/// <param name="xmlFileName"></param>
/// <param name="xPath"></param>
/// <returns></returns>
public static XmlNodeList GetXmlNodeList(string xmlFileName, string xPath)
{
XmlDocument xmldocument = new XmlDocument();
//加载xml文档
xmldocument.LoadXml(xmlFileName);
try
{
XmlNodeList xmlnodelist = xmldocument.SelectNodes(xPath);
return xmlnodelist;
}
catch
{
return null;
}
}
/// <summary>
/// 获取指定路径节点的属性与指定属性名匹配
/// </summary>
/// <param name="xmlFileName"></param>
/// <param name="xPath">要匹配的XPath表达式(例如:"//节点名//子节点名</param>
/// <param name="attributeName">指定的属性名称</param>
/// <returns></returns>
public static XmlAttribute GetXmlAttribute(string xmlFileName, string xPath,string attributeName)
{
XmlAttribute xmlattribute=null;
XmlDocument xmldocument = new XmlDocument();
xmldocument.LoadXml(xmlFileName);
try
{
XmlNode xmlnode = xmldocument.SelectSingleNode(xPath);
if (xmlnode != null)
{
if (xmlnode.Attributes.Count > 0)
{
xmlattribute = xmlnode.Attributes[attributeName];
}
}
}
catch (Exception err)
{
throw err;
}
return xmlattribute;
}
/// <summary>
/// 获取指定节点的属性集合
/// </summary>
/// <param name="xmlFileName"></param>
/// <param name="xPath"></param>
/// <returns></returns>
public static XmlAttributeCollection GetNodeAttributes(string xmlFileName, string xPath)
{
XmlAttributeCollection xmlattributes = null;
XmlDocument xmldocument = new XmlDocument();
xmldocument.LoadXml(xmlFileName);
try
{
XmlNode xmlnode = xmldocument.SelectSingleNode(xPath);
if (xmlnode != null)
{
if (xmlnode.Attributes.Count > 0)
{
xmlattributes = xmlnode.Attributes;
}
}
}
catch (Exception err)
{
throw err;
}
return xmlattributes;
}
/// <summary>
/// 更新指定节点的某一属性设定其属性值value
/// </summary>
/// <param name="xmlFileName">xml文档路径</param>
/// <param name="xPath"></param>
/// <param name="attributeOldeName">旧属性名称</param>
/// <param name="attributeNewName">新属性名称</param>
/// <param name="value">属性值</param>
/// <returns>成功返回true,失败返回false</returns>
public static bool UpdateAttribute(string xmlFileName, string xPath, string attributeName, string value)
{
bool isSuccess = false;
XmlDocument xmldocument = new XmlDocument();
xmldocument.LoadXml(xmlFileName);
try
{
XmlNode xmlnode = xmldocument.SelectSingleNode(xPath);
if (xmlnode != null)
{
foreach (XmlAttribute attribute in xmlnode.Attributes)
{
if (attribute.Name.ToString().ToLower() == attributeName.ToLower())
{
isSuccess = true;
attribute.Value = value;
xmldocument.Save(xmlFileName);
break;
}
}
}
}
catch(Exception err)
{
throw err;
}
return isSuccess;
}
/// <summary>
/// 删除指定节点的所有属性
/// </summary>
/// <param name="xmlFileName"></param>
/// <param name="xPath"></param>
/// <returns>成功返回true,失败返回false</returns>
public static bool DeleteAttributes(string xmlFileName, string xPath)
{
bool isSuccess = false;
XmlDocument xmldocument = new XmlDocument();
xmldocument.LoadXml(xmlFileName);
try
{
XmlNode xmlnode = xmldocument.SelectSingleNode(xPath);
if (xmlnode != null)
{
if (xmlnode.Attributes.Count > 0)
{
xmlnode.Attributes.RemoveAll();
xmldocument.Save(xmlFileName);
isSuccess = true;
}
}
}
catch (Exception err)
{
throw err;
}
return isSuccess;
}
/// <summary>
/// 删除匹配属性名称的指定节点的属性
/// </summary>
/// <param name="xmlFileName"></param>
/// <param name="xPath"></param>
/// <param name="attributeName"></param>
/// <returns></returns>
public static bool DeleteOneAttribute(string xmlFileName, string xPath, string attributeName)
{
bool isSuccess = false;
XmlDocument xmldocument = new XmlDocument();
xmldocument.LoadXml(xmlFileName);
XmlAttribute xmlAttribute = null;
try
{
XmlNode xmlnode = xmldocument.SelectSingleNode(xPath);
if (xmlnode != null)
{
if (xmlnode.Attributes.Count > 0)
{
foreach (XmlAttribute attribute in xmlnode.Attributes)
{
if (attribute.Name.ToLower() == attributeName.ToLower())
{
xmlAttribute = attribute;
break;
}
}
}
if (xmlAttribute != null)
{
xmlnode.Attributes.Remove(xmlAttribute);
xmldocument.Save(xmlFileName);
isSuccess = true;
}
}
}
catch (Exception err)
{
throw err;
}
return isSuccess;
}
/// <summary>
/// 创建指定节点的属性,如果属性存在则不创建
/// </summary>
/// <param name="xmlFileName"></param>
/// <param name="xPath"></param>
/// <param name="attributeName"></param>
/// <param name="value"></param>
/// <returns></returns>
public static bool AddAttribute(string xmlFileName, string xPath,string attributeName,string value)
{
bool isSuccess = false;
XmlDocument xmldocument = new XmlDocument();
xmldocument.LoadXml(xmlFileName);
try
{
XmlNode xmlnode = xmldocument.SelectSingleNode(xPath);
if (xmlnode != null)
{
if (xmlnode.Attributes.Count > 0)//遍历判断有无此属性
{
foreach (XmlAttribute attribute in xmlnode.Attributes)
{
if (attribute.Name.ToLower() == attributeName.ToLower())
{
//有则不改,直接返回true;
return true;
}
}
}
XmlAttribute xmlAttribute = xmldocument.CreateAttribute(attributeName);
xmlAttribute.Value = value;
xmlnode.Attributes.Append(xmlAttribute);
xmldocument.Save(xmlFileName);
isSuccess = true;
}
}
catch (Exception err)
{
throw err;
}
return isSuccess;
}
/// <summary>
/// 为某一指定路径节点下添加新的节点,如果该节点存在,则不添加
/// </summary>
/// <param name="xmlFileName">xml文档路径</param>
/// <param name="xPath">需要添加节点的路径</param>
/// <param name="nodeName">节点名称</param>
/// <param name="innerText">节点文本值</param>
/// <returns>成功返回true,存在返回false</returns>
public static bool AddNode(string xmlFileName, string xPath, string nodeName, string innerText)
{
bool isSuccess = false;
bool isExisitNode = false;
XmlDocument xmldocument = new XmlDocument();
xmldocument.LoadXml(xmlFileName);
try
{
XmlNode xmlnode = xmldocument.SelectSingleNode(xPath);
if (xmlnode != null)
{
isExisitNode = true;
}
if (!isExisitNode)
{
XmlElement subElement = xmldocument.CreateElement(nodeName);
subElement.InnerText = innerText;
xmlnode.AppendChild(subElement);
isSuccess = true;
xmldocument.Save(xmlFileName);
}
}
catch (Exception err)
{
throw err;
}
return isSuccess;
}
/// <summary>
/// 查找指定的节点,更新其节点值
/// </summary>
/// <param name="xmlFileName"></param>
/// <param name="xPath"></param>
/// <param name="nodeName"></param>
/// <param name="innerText"></param>
/// <returns></returns>
public static bool UpdateNode(string xmlFileName, string xPath, string nodeName, string innerText)
{
bool isSuccess = false;
bool isExisitNode = false;
XmlDocument xmldocument = new XmlDocument();
xmldocument.LoadXml(xmlFileName);
XmlNode xmlnode = xmldocument.SelectSingleNode(xPath);
try
{
if (xmlnode != null)
{
isExisitNode = true;
}
if (!isExisitNode)
{
xmlnode.InnerText = innerText;
isSuccess = true;
xmldocument.Save(xmlFileName);
}
}
catch (Exception err)
{
throw err;
}
return isSuccess;
}
/// <summary>
/// 删除指定节点名称为nodeName的所有节点,如果该节点有子节点,则不能删除
/// </summary>
/// <param name="xmlFileName"></param>
/// <param name="xPath"></param>
/// <param name="nodeName"></param>
/// <returns></returns>
public static bool deleteNode(string xmlFileName, string xPath, string nodeName)
{
bool isSuccess = false;
XmlDocument xmldocument = new XmlDocument();
try
{
XmlNode xmlnode = xmldocument.SelectSingleNode(xPath);
if (xmlnode != null)
{
if (xmlnode.HasChildNodes)
{
isSuccess = false;
}
else
{
xmlnode.ParentNode.RemoveChild(xmlnode);//删除节点
isSuccess = true;
xmldocument.Save(xmlFileName);
}
}
}
catch (Exception err)
{
throw err;
}
return isSuccess;
}
/// <summary>
/// 根据指定节点名称更新其下指定的子节点的值
/// </summary>
/// <param name="xmlFileName"></param>
/// <param name="xPath"></param>
/// <param name="nodeName"></param>
/// <param name="innerText"></param>
/// <returns></returns>
public static bool UpdateChildNode(string xmlFileName, string xPath, string nodeName,string childName, string innerText)
{
bool isSuccess = false;
XmlDocument xmldocument = new XmlDocument();
try
{
XmlNode xmlnode = xmldocument.SelectSingleNode(xPath);
if (xmlnode != null)
{
foreach (XmlNode node in xmlnode.ChildNodes)
{
if (node.Name.ToLower() == childName.ToLower())
{
node.InnerText = innerText;
xmldocument.Save(xmlFileName);
isSuccess = true;
}
}
}
}
catch (Exception err)
{
throw err;
}
return isSuccess;
}
#region 创建XML的根节点
/// <summary>
/// 创建XML的根节点
/// </summary>
private void CreateXMLElement()
{
//创建一个XML对象
_xml = new XmlDocument();
if (File.Exists(_FilePath))
{
//加载XML文件
_xml.Load(this._FilePath);
}
//为XML的根节点赋值
_element = _xml.DocumentElement;
}
#endregion
#region 保存XML文件
/// <summary>
/// 保存XML文件
/// </summary>
public void Save()
{
//创建XML的根节点
//CreateXMLElement();
//保存XML文件
_xml.Save(this._FilePath);
}
#endregion //保存XML文件
#region XML文档创建和节点或属性的添加、修改
/// <summary>
/// 创建一个XML文档
/// </summary>
/// <param name="xmlFileName">XML文档完全文件名(包含物理路径)</param>
/// <param name="rootNodeName">XML文档根节点名称(须指定一个根节点名称)</param>
/// <param name="version">XML文档版本号(必须为:"1.0")</param>
/// <param name="encoding">XML文档编码方式</param>
/// <param name="standalone">该值必须是"yes"或"no",如果为null,Save方法不在XML声明上写出独立属性</param>
/// <returns>成功返回true,失败返回false</returns>
public static bool CreateXmlDocument(string xmlFileName, string rootNodeName, string version, string encoding, string standalone)
{
bool isSuccess = false;
try
{
XmlDocument xmlDoc = new XmlDocument();
XmlDeclaration xmlDeclaration = xmlDoc.CreateXmlDeclaration(version, encoding, standalone);
XmlNode root = xmlDoc.CreateElement(rootNodeName);
xmlDoc.AppendChild(xmlDeclaration);
xmlDoc.AppendChild(root);
xmlDoc.Save(xmlFileName);
isSuccess = true;
}
catch (Exception ex)
{
throw ex; //这里可以定义你自己的异常处理
}
return isSuccess;
}
#endregion
}
}
c# xml操作类的更多相关文章
- 简单的XML操作类
/// <summary> /// XmlHelper 的摘要说明. /// xml操作类 /// </summary> public class XmlHelper { pr ...
- C#常用操作类库三(XML操作类)
/// <summary> /// XmlHelper 的摘要说明. /// xml操作类 /// </summary> public class XmlHelper { pr ...
- XML Helper XML操作类
写的一个XML操作类,包括读取/插入/修改/删除. using System;using System.Data;using System.Configuration;using System.Web ...
- C#对XML操作类
C#对XML操作类 该类包含了对XML文件的创建,添加,读取,删除,修改等操作 //#define isUnity #if isUnity using UnityEngine; #endif usin ...
- PHP XML操作类DOMDocument
不得不自已写一个.XML 的操作一直没有用过.下面是自己搜集的XML操作类 DOMDocument相关的内容. 属性: Attributes 存储节点的属性列表(只读) childNodes 存储节点 ...
- C#:XML操作类
写的一个XML操作类,包括读取/插入/修改/删除. using System; using System.Data; using System.Configuration; using System. ...
- c# xml操作类 比较齐全
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu ...
- c#XML操作类的方法总结
using System.Xml;using System.Data; namespace DotNet.Utilities{ /// <summary> /// Xml的操作 ...
- XML操作类
using System; using System.Data; using System.IO; using System.Xml; namespace DotNet.Utilities { ...
随机推荐
- JQ兼容各种JS库的写法
来自为知笔记(Wiz)
- Sum Problem-hdu-1001
Hey, welcome to HDOJ(Hangzhou Dianzi University Online Judge). In this problem, your task is to calc ...
- javac: cannot execute binary file
# java/jdk1.6.0_12/bin/javac-bash: java/jdk1.6.0_12/bin/javac: cannot execute binary file 后来检验,检查了 ...
- SharePoint 2010 用Event Receiver将文件夹自动变成approved状态 (2)
接上篇,先贴ItemUpdated的代码: base.ItemUpdated(properties); if (properties.ListItem.FileSystemObjectType != ...
- OAuth2.0开发指南
OAuth2.0开发指南 1.认证与登录 来往开放平台支持3种不同的OAuth 2.0验证与授权流程: 服务端流程(协议中Authorization Code Flow): 此流程适用于在Web服务端 ...
- C#—Dev XtraTabControl动态增加Tab和关闭选项卡方法
C#—Dev XtraTabControl动态增加Tab和关闭选项卡方法,有需要的朋友可以参考下. 记录一下以免以后忘了 添加using DevExpress.XtraTab; 双击listview增 ...
- Mule与其它web应用服务器的区别
跟JBoss.Tomcat或其它web应用服务器相比,Mule有何不同?虽然他们有一些重要的相同点,不同点可以归结为你想达到的目标是什么.某些种类的应用对于Mule来说比较容易去编写.部署和管理,其它 ...
- golang之interface
一.概述 接口类型是对 "其他类型行为" 的抽象和概况:因为接口类型不会和特定的实现细节绑定在一起:很多面向对象都有类似接口概念,但Golang语言中interface的独特之处在 ...
- git clone 命令报错 +diffie-hellman-group1-sha1
解决方法: 在.ssh目录下新建文件config , 添加 Host * KexAlgorithms +diffie-hellman-group1-sha1 到文件config,即可.
- UIButton 头文件常见属性和方法
UIButton头文件常见属性 1.属性 contentEdgeInsets: default is UIEdgeInsetsZero.设置内容四边距,默认边距为0 @property(nonatom ...