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 { ...
随机推荐
- 如何看linux是32位还是64位
查看linux是多少位的几位方法: 查看linux机器是32位还是64位的方法: 方法一: file /sbin/init 或者 file /bin/ls 结果如下:/sbin/init: ELF ...
- Objextive-C几道小题目笔记
//掷骰子题,掷骰子100次,输出每个号出现的次数 void one() { for (int i=1; i<=100; i++) { int a = arc4random() % 6 +1; ...
- Asp.net MVC 之 ActionResult
Action运行完后,回传的值通过ActionResult 类别或者其衍生的类别操作.ActionResult是一个抽象类,因此,Asp.net MVC 本身就实作了许多不同类型的ActionResu ...
- 一步一步学python(三) - 使用字符串
1.基本字符串操作 序列和元组的索引.分片.乘法.判断成员资格.求长度.取最小值和最大值对字符串同样适用. 字符串是不可变的 2.字符串格式化 %左侧放字符串右侧放格式化的值.一般情况下使用元组 fo ...
- 【the service mysql57 failed the most】
异常信息: the the service mysql57 failed the most recent status change request with the messagethe servi ...
- GroundworkCSS ♥ Tables
微信公众平台开发(41)一键关注微信公众平台账号 - 方倍工作室 - 博客园 微信公众平台开发(41)一键关注微信公众平台账号 GroundworkCSS ♥ Tables Example Layou ...
- [C++ 2011 STL (VS2012 Update4) 源代码阅读系列(2)]熟悉一些宏定义和模版偏特化或叫模版专门化
[C++ 2011 STL (VS2012 Update4) 源代码阅读系列(2)]熟悉一些宏定义和模版偏特化或叫模版专门化 // point_test.cpp : 知识点练习和测试,用于单步调试,跟 ...
- poj 2531 Network Saboteur(经典dfs)
题目大意:有n个点,把这些点分别放到两个集合里,在两个集合的每个点之间都会有权值,求可能形成的最大权值. 思路:1.把这两个集合标记为0和1,先默认所有点都在集合0里. 2 ...
- 使用Kotlin开发Android应用(I):简单介绍
使用Kotlin开发Android应用(I):简单介绍 @author ASCE1885的 Github 简书 微博 CSDN 原文链接 Kotlin是一门基于JVM的编程语言.它正成长为Androi ...
- caffe源代码分析--data_layer.cpp
dataLayer作为整个网络的输入层, 数据从leveldb中取. leveldb的数据是通过图片转换过来的. 网络建立的时候. datalayer主要是负责设置一些參数,比方batchsize.c ...