Realm_King 之 .NET操作XML完整类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Web;
namespace BLL
{
public class XmlDoc
{
/// <summary>
/// 创建Xml文件
/// </summary>
/// <param name="xmlPath">创建文件路径</param>
/// <param name="element"></param>
public void CreateXmlNode(string xmlPath, string element)
{
//实例化Xml文档类
XmlTextWriter xmlTextWriter = new XmlTextWriter(xmlPath, Encoding.UTF8);
//创建Xml声明
xmlTextWriter.WriteStartDocument();
xmlTextWriter.WriteStartElement(element);
xmlTextWriter.Flush();
xmlTextWriter.Close();
}
/// <summary>
/// 新增Xml节点
/// </summary>
/// <param name="xmlPath">文件路径</param>
/// <param name="singleNode"></param>
/// <param name="node"></param>
public void AddXmlElement(string xmlPath, string singleNode, XmlNode node)
{
//实例化Xml文档类
XmlDocument xmlDocument = new XmlDocument();
//加载Xml文件
xmlDocument.Load(xmlPath);
xmlDocument.SelectSingleNode(singleNode).AppendChild(node);
xmlDocument.Save(xmlPath);
}
/// <summary>
/// 新增Xml节点
/// </summary>
/// <param name="xmlPath"></param>
/// <param name="singleNode"></param>
/// <param name="node"></param>
public void AddXmlElement(string xmlPath, string singleNode, string element, string attribute, string value)
{
//实例化Xml文档类
XmlDocument xmlDocument = new XmlDocument();
//加载Xml文件
xmlDocument.Load(xmlPath);
XmlNode xmlNode = xmlDocument.SelectSingleNode(singleNode);
XmlElement xmlElement = xmlDocument.CreateElement(element); ;
xmlElement.SetAttribute(attribute, value);
xmlDocument.Save(xmlPath);
}
/// <summary>
/// 读取XML文件的XmlDocument
/// </summary>
/// <param name="xmlPath">Xml文件路径</param>
/// <returns></returns>
public XmlDocument GetXmlDocument(string xmlPath)
{
try
{
//实例化Xml文档类
XmlDocument xmlDocument = new XmlDocument();
//加载Xml文件
xmlDocument.Load(GetMapPath(xmlPath));
return xmlDocument;
}
catch (System.Xml.XmlException exp)
{
throw exp;
}
catch (System.IO.IOException exp)
{
throw exp;
}
catch (ArgumentNullException exp)
{
throw exp;
}
catch (ArgumentException exp)
{
throw exp;
}
catch (Exception exp)
{
throw exp;
}
}
/// <summary>
/// 读取XML文件的XmlNode
/// </summary>
/// <param name="xmlPath">Xml文件路径</param>
/// <param name="singleNode">选择匹配XPath表达式的第一个XmlNode</param>
/// <returns></returns>
public XmlNode GetXmlNode(string xmlPath, string singleNode)
{
try
{
//实例化Xml文档类
XmlDocument xmlDocument = new XmlDocument();
//加载Xml文件
xmlDocument.Load(GetMapPath(xmlPath));
//获取文件内容
return xmlDocument.SelectSingleNode(singleNode);
}
catch (System.Xml.XPath.XPathException exp)
{
throw exp;
}
catch (System.Xml.XmlException exp)
{
throw exp;
}
catch (System.IO.IOException exp)
{
throw exp;
}
catch (ArgumentNullException exp)
{
throw exp;
}
catch (ArgumentException exp)
{
throw exp;
}
catch (Exception exp)
{
throw exp;
}
}
/// <summary>
/// 读取XML文件的XmlElement
/// </summary>
/// <param name="xmlPath">Xml文件路径</param>
/// <param name="singleNode">选择匹配XPath表达式的第一个XmlNode</param>
/// <param name="xmlNodeString">节点名称</param>
/// <returns></returns>
public XmlElement GetXmlElement(string xmlPath, string singleNode, string xmlNodeString)
{
try
{
//实例化Xml文档类
XmlDocument xmlDocument = new XmlDocument();
//加载Xml文件
xmlDocument.Load(GetMapPath(xmlPath));
//获取文件内容
XmlNode xmlNode = xmlDocument.SelectSingleNode(singleNode);
//提取节点名称下的属性值
return xmlNode[xmlNodeString];
}
catch (System.Xml.XPath.XPathException exp)
{
throw exp;
}
catch (System.Xml.XmlException exp)
{
throw exp;
}
catch (System.IO.IOException exp)
{
throw exp;
}
catch (ArgumentNullException exp)
{
throw exp;
}
catch (ArgumentException exp)
{
throw exp;
}
catch (Exception exp)
{
throw exp;
}
}
/// <summary>
/// 读取XML文件的节点属性
/// </summary>
/// <param name="xmlPath">Xml文件路径</param>
/// <param name="singleNode">选择匹配XPath表达式的第一个XmlNode</param>
/// <param name="xmlNodeString">节点名称</param>
/// <param name="variables">节点属性</param>
/// <returns></returns>
public string GetAttribute(string xmlPath, string singleNode, string xmlNodeString, string variables)
{
try
{
//实例化Xml文档类
XmlDocument xmlDocument = new XmlDocument();
//加载Xml文件
xmlDocument.Load(GetMapPath(xmlPath));
//获取文件内容
XmlNode xmlNode = xmlDocument.SelectSingleNode(singleNode);
//提取节点名称下的属性值
return xmlNode[xmlNodeString].GetAttribute(variables);
}
catch (System.Xml.XPath.XPathException exp)
{
throw exp;
}
catch (System.Xml.XmlException exp)
{
throw exp;
}
catch (System.IO.IOException exp)
{
throw exp;
}
catch (ArgumentNullException exp)
{
throw exp;
}
catch (ArgumentException exp)
{
throw exp;
}
catch (Exception exp)
{
throw exp;
}
}
/// <summary>
/// 设置XML节点
/// </summary>
/// <param name="xmlNodeString">节点名称</param>
/// <param name="value">节点值</param>
/// <param name="discrption">节点说明</param>
public void SetAttribute(string xmlPath, string singleNode, string xmlNodeString, string attribute, string value, string description)
{
try
{
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(GetMapPath(xmlPath));
//获取文件内容
XmlNode xmlNode = xmlDocument.SelectSingleNode(singleNode);
//设置指定XML节点Value值
xmlNode[xmlNodeString].SetAttribute(attribute, value);
xmlNode[xmlNodeString].SetAttribute("Description", description);
//将设置后的XML节点保存
xmlDocument.Save(GetMapPath(xmlPath));
}
catch (Exception exp)
{
throw new Exception(exp.Message);
}
}
/// <summary>
/// 设置XML节点
/// </summary>
/// <param name="xmlPath">XML文件路径</param>
/// <param name="singleNode">选择匹配XPath表达式的第一个XmlNode</param>
/// <param name="xmlNodeString">指定节点</param>
/// <param name="attribute">属性数组</param>
/// <param name="value">值数组</param>
public void SetAttribute(string xmlPath, string singleNode, string xmlNodeString, string[] attribute, string[] value)
{
try
{
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(GetMapPath(xmlPath));
//获取文件内容
XmlNode xmlNode = xmlDocument.SelectSingleNode(singleNode);
for (int i = 0; i < attribute.Length; i++)
{
//设置指定XML节点Value值
xmlNode[xmlNodeString].SetAttribute(attribute[i], value[i]);
}
//将设置后的XML节点保存
xmlDocument.Save(xmlPath);
}
catch (Exception exp)
{
throw new Exception(exp.Message);
}
}
/// <summary>
/// 通过XML名称获取XML物理路径,可无限添加,前提是XML都位于同一网站目录下
/// </summary>
/// <param name="xmlName"></param>
/// <returns></returns>
private string GetMapPath(string xmlName)
{
switch (xmlName)
{
case "GlobalVariables.xml":
xmlName = HttpContext.Current.Server.MapPath("~/XML/") + xmlName;
break;
default:
break;
}
return xmlName;
}
}
}
好了不多说了,如果有bug出现希望大家多多指点....
Realm_King 之 .NET操作XML完整类的更多相关文章
- C#操作xml完整类文件
C#操作xml完整类文件 xml_oper.cs using ...System; using System.Data; using System.Web; using System.Xml; /** ...
- 对xml的操作使用的类XElement的使用
操作xml的类比较多,发现XElement类操作xml极其方便,下面列举一些操作方法 1.创建xml XElement xml = new XElement("root", new ...
- C#操作XML(读XML,写XML,更新,删除节点,与dataset结合等)【转载】
已知有一个XML文件(bookstore.xml)如下: Corets, Eva 5.95 1.插入节点 往节点中插入一个节点: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
- Dom4j完整教程,操作XML教程
目录 1.DOM4J简介 2.XML文档操作1 2.1.读取XML文档: 2.2.获取根节点 2.3.. 新增一个节点以及其下的子节点与数据 2.4. 写入XML文件 2. 5. 遍历xml节点 2. ...
- C#XmlHelper帮助类操作Xml文档的通用方法汇总
前言 该篇文章主要总结的是自己平时工作中使用频率比较高的Xml文档操作的一些常用方法和收集网上写的比较好的一些通用Xml文档操作的方法(主要包括Xml序列化和反序列化,Xml文件读取,Xml文档节点内 ...
- C#操作Xml树的扩展类
本文提供一个操作Xml树的扩展类,与将xml字符串直接映射成实体对象的使用方法,供大家参考,学习. 下面附上源码 using System; using System.Collections.Gene ...
- XML序列化 判断是否是手机 字符操作普通帮助类 验证数据帮助类 IO帮助类 c# Lambda操作类封装 C# -- 使用反射(Reflect)获取dll文件中的类型并调用方法 C# -- 文件的压缩与解压(GZipStream)
XML序列化 #region 序列化 /// <summary> /// XML序列化 /// </summary> /// <param name="ob ...
- 使用dom4j类操作xml文档
dom4j操作xml数据 1.Document对象相关 ①读取XML文件,获得document对象. SAXReader reader = new SAXReader(); Document docu ...
- 自己动手之使用反射和泛型,动态读取XML创建类实例并赋值
前言: 最近小匹夫参与的游戏项目到了需要读取数据的阶段了,那么觉得自己业余时间也该实践下数据相关的内容.那么从哪入手呢?因为用的是Unity3d的游戏引擎,思来想去就选择了C#读取XML文件这个小功能 ...
随机推荐
- p2p-如何拯救k8s镜像分发的阿喀琉斯之踵
K8s的出现为PaaS行业的发展打了一针兴奋剂,Docker+k8s的技术路线已经成为了容器云的主流.尤其针对大流量,大弹性的应用场景来说,k8s将其从繁杂的运维.部署工作中彻底拯救出来.然而事情往往 ...
- WPF 禁用实时触摸
原文:WPF 禁用实时触摸 微软想把 WPF 作为 win7 的触摸好用的框架,所以微软做了很多特殊的兼容.为了获得真实的触摸消息,微软提供了 OnStylusDown, OnStylusUp, 和 ...
- mac在终端打开应用程序
今天研究了下mac终端的启动流程.以下以sublime为例,介绍怎么在mac的终端中加入app启动方法. 方法1 :使用"open -a /Applications/Sublime\ Tex ...
- elasticsearch-jdbc
jprante/elasticsearch-jdbc The Java Database Connection (JDBC) importer allows to fetch data from JD ...
- Cython 的学习
开发效率极高的 Python 一直因执行效率过低为人所诟病,Cython 由此诞生,特性介于 Python 和 C 语言之间. Cython 学习 1. Cython 是什么? 它是一个用来快速生成 ...
- CUDA页锁定内存(Pinned Memory)
对CUDA架构而言,主机端的内存被分为两种,一种是可分页内存(pageable memroy)和页锁定内存(page-lock或 pinned).可分页内存是由操作系统API malloc()在主机上 ...
- Redis 宝典 | 基础、高级特性与性能调优
转载:Redis 宝典 | 基础.高级特性与性能调优 本文由 DevOpsDays 本文由简书作者kelgon供稿,高效运维社区致力于陪伴您的职业生涯,与您一起愉快的成长. 作者:kelgon ...
- Swift 分类 结构体
感谢原作者:http://www.cocoachina.com/newbie/basic/2014/0612/8780.html 类和结构体是人们构建代码所用的一种通用且灵活的构造体.为了在类和结构体 ...
- WPF 元素相对另外一个元素的 相对位置
原文:WPF 元素相对另外一个元素的 相对位置 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/koloumi/article/details/740 ...
- PHP中遍历关联数组的方法
下面介绍PHP中遍历关联数组的三种方法:foreach <?php $sports = array( 'football' => 'good', 'swimming' => 'ver ...