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完整类的更多相关文章

  1. C#操作xml完整类文件

    C#操作xml完整类文件 xml_oper.cs using ...System; using System.Data; using System.Web; using System.Xml; /** ...

  2. 对xml的操作使用的类XElement的使用

    操作xml的类比较多,发现XElement类操作xml极其方便,下面列举一些操作方法 1.创建xml XElement xml = new XElement("root", new ...

  3. 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 ...

  4. Dom4j完整教程,操作XML教程

    目录 1.DOM4J简介 2.XML文档操作1 2.1.读取XML文档: 2.2.获取根节点 2.3.. 新增一个节点以及其下的子节点与数据 2.4. 写入XML文件 2. 5. 遍历xml节点 2. ...

  5. C#XmlHelper帮助类操作Xml文档的通用方法汇总

    前言 该篇文章主要总结的是自己平时工作中使用频率比较高的Xml文档操作的一些常用方法和收集网上写的比较好的一些通用Xml文档操作的方法(主要包括Xml序列化和反序列化,Xml文件读取,Xml文档节点内 ...

  6. C#操作Xml树的扩展类

    本文提供一个操作Xml树的扩展类,与将xml字符串直接映射成实体对象的使用方法,供大家参考,学习. 下面附上源码 using System; using System.Collections.Gene ...

  7. XML序列化 判断是否是手机 字符操作普通帮助类 验证数据帮助类 IO帮助类 c# Lambda操作类封装 C# -- 使用反射(Reflect)获取dll文件中的类型并调用方法 C# -- 文件的压缩与解压(GZipStream)

    XML序列化   #region 序列化 /// <summary> /// XML序列化 /// </summary> /// <param name="ob ...

  8. 使用dom4j类操作xml文档

    dom4j操作xml数据 1.Document对象相关 ①读取XML文件,获得document对象. SAXReader reader = new SAXReader(); Document docu ...

  9. 自己动手之使用反射和泛型,动态读取XML创建类实例并赋值

    前言: 最近小匹夫参与的游戏项目到了需要读取数据的阶段了,那么觉得自己业余时间也该实践下数据相关的内容.那么从哪入手呢?因为用的是Unity3d的游戏引擎,思来想去就选择了C#读取XML文件这个小功能 ...

随机推荐

  1. cordova之File Transfer (Permission denied) 权限导致下载失败 - 简书

    原文:cordova之File Transfer (Permission denied) 权限导致下载失败 - 简书 在文件上传时,由于权限问题,会报错(Permission denied),安卓6. ...

  2. BZOJ 2818 Gcd 线性欧拉筛(Eratosthenes银幕)

    标题效果:定整N(N <= 1e7),乞讨1<=x,y<=N和Gcd(x,y)素数的数(x,y)有多少.. 思考:推,. 建立gcd(x,y) = p,然后,x / p与y / p互 ...

  3. 关于java项目与web项目中lib包的那点事

    一.在java项目中如何引入外部jar包:1.在我们的java项目下新建一个lib文件夹:2.将我们需要引入的jat包复制到lib文件夹下:3.选中我们lib包下的jar,右键选择Build Path ...

  4. cocos2d-x创建第一个项目

    #include "AppDelegate.h" #include "HelloWorldScene.h" USING_NS_CC; AppDelegate:: ...

  5. 如何更好的利用redis

    原文地址http://oldblog.antirez.com/post/take-advantage-of-redis-adding-it-to-your-stack.html @(syoka)[re ...

  6. R 语言的学习(一)

    1. 基本 "hello world!" > "hello world!" [1] "hello world!" 这在 R 中并不是一 ...

  7. 3 学习UML图 学习DDD的基本概念

    今天在学习DDD的过程中看到了大神 圣杰的博文 个人觉得非常经典 强烈推荐  在此提供url链接: UML类图10分钟快速入门 关于聚合 的理解 :一类没有紧密相关的东西聚在一起 ,分开了也可以独立存 ...

  8. Matlab Tricks(二十六)—— 置乱(随机化)与恢复(shuffle/permutation & restore)

    x = 1:10; n = length(x); perm = randperm(n); x_perm = x(perm); % x_perm 表示置乱后的结果 x_ori(perm) = x_per ...

  9. 怎么给罗技K480 增加Home、End键

    最近看张大妈上很多人分享了我的桌面,有感于整天低头码字不利健康,隧鼓捣起自己的电脑桌了. 此处省略N字... 进入正文,我码字用的是罗技的K480蓝牙键盘 码了几行代码,发现没有Home.End键,这 ...

  10. Oracle召回

    后几集录制视频,记录在记录开始的时候不知道怎么,录了几集没有什么,够又一次录,过程中也也把Oracle数据库这部分看了一遍,收获也挺多的,学习是反复积累的过程,对于一些零散的知识点又回想了一下,又一次 ...