首页 > Realm_King 之 .NET操作XML完整类

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

    {

        ///

  

        /// 创建Xml文件  

        ///
  

        /// 创建文件路径  

        ///   

        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();

        }

        ///

  

        /// 新增Xml节点

        ///
  

        /// 文件路径  

        ///

        ///   

        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);

        }

        ///

  

        /// 新增Xml节点  

        ///
  

        ///   

        ///   

        ///   

        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);

        }



        ///

  

        /// 读取XML文件的XmlDocument  

        ///
  

        /// Xml文件路径  

        ///   

        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;

            }

        }

        ///

  

        /// 读取XML文件的XmlNode  

        ///
  

        /// Xml文件路径  

        /// 选择匹配XPath表达式的第一个XmlNode  

        ///   

        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;

            }

        }

        ///

  

        /// 读取XML文件的XmlElement  

        ///
  

        /// Xml文件路径  

        /// 选择匹配XPath表达式的第一个XmlNode  

        /// 节点名称  

        ///   

        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;

            }

        }

        ///

  

        /// 读取XML文件的节点属性  

        ///
  

        /// Xml文件路径  

        /// 选择匹配XPath表达式的第一个XmlNode  

        /// 节点名称  

        /// 节点属性  

        ///   

        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;

            }

        }

        ///

  

        /// 设置XML节点  

        ///
  

        /// 节点名称  

        /// 节点值  

        /// 节点说明  

        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);

            }

        }

        ///

  

        /// 设置XML节点  

        ///
  

        /// XML文件路径  

        /// 选择匹配XPath表达式的第一个XmlNode  

        /// 指定节点  

        /// 属性数组  

        /// 值数组  

        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);

            }

        }

        ///

  

        /// 通过XML名称获取XML物理路径,可无限添加,前提是XML都位于同一网站目录下  

        ///
  

        ///   

        ///   

        private string GetMapPath(string xmlName)

        {

            switch (xmlName)

            {

                case "GlobalVariables.xml":

                    xmlName = HttpContext.Current.Server.MapPath("~/XML/") + xmlName;

                    break;

                default:

                    break;

            }

            return xmlName;

        }

    }

}

 

好了不多说了,如果有bug出现希望大家多多指点....

转载于:https://www.cnblogs.com/RealmKing/p/3414329.html

更多相关:

  • 有时候我们项目,在执行某个操作后,会生成一些数据结果,如报表一类的东西,我们需要对结果进行保存,甚至是生成word文档。 那么首先获取到控件快照就最基本的条件。 生成快照的静态方法类 using System; using System.Collections.Generic; using System.Drawing; using...

  • 作用批量执行sql语句 表达式.RunSQL(SQLStatement,UseTransaction) 表达式.一个代表DoCmd对象的变量。 注释:sqlstatement参数的最大长度为 32,768 个字符(而"宏"窗口中的 SQL 语句操作参数的最大长度为 256 个字符)。      官方说仅能用于Microsoft Acc...

  • 前戏:针对上一篇列出来的功能点,今天和大家分享下这个自定义的公式是怎么设计的,由于我的第一篇博客在首页被管理员移走了,大家可以点击这里来跳转,看下第一篇的目录结构。本人作为老菜鸟,和大家分享的也是一些老菜鸟的想法,大神千万别喷我.   设计背景:当初为什么要设计这个自定义的计算公式呢,原因就是,这个价格是不确定的,计算方式也是不确定的...

  • 背景 搭建一个适合公司erp业务的开发平台。 架构概要图:    流程引擎开发平台:  包含流程引擎设计器,流程管理平台,流程引擎服务。目前只使用单个数据库进行管理。  流程引擎设计器    采用silverlight进行开发,本质是对流程模型进行设计,并生成xml。包含:人工节点,自动节点,并行开始节点,并行结束节点,消息节点,文...

  • importjava.security.SecureRandom;importjavax.crypto.Cipher;importjavax.crypto.SecretKey;importjavax.crypto.SecretKeyFactory;importjavax.crypto.spec.DESKeySpec;//结果与DES算...

  • 题目:替换空格 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 输入:s = "We are happy." 输出:"We%20are%20happy." 限制: 0 <= s 的长度 <= 10000 解题: 时间复杂度:O(n) 空间复杂度:O(n) class Solution { public:s...

  • 在C++11标准库中,string.h已经添加了to_string方法,方便从其他类型(如整形)快速转换成字面值。 例如: for (size_t i = 0; i < texArrSize; i++)RTX_Shader.SetInt(string("TexArr[") + to_string(i) + "]", 7 + i);...

  • Ubuntu 14.04安装并升级之后,变成楷体字体非常难看,我昨天搞了一晚上,终于理了个头绪,这里整理一下。 经过网上调研,大家的一致看法是,使用开源字体库文泉驿的微黑字体效果比较理想,甚至效果不输windows平台的雅黑字体。下面我打算微黑来美化Ubuntu 14.04. 1.安装文泉驿微黑字体库 sudo aptitude...

  • 使用string时发现了一些坑。 我们知道stl 容器并不是线程安全的,所以在使用它们的过程中往往需要一些同步机制来保证并发场景下的同步更新。 应该踩的坑还是一个不拉的踩了进去,所以还是记录一下吧。 string作为一个容器,随着我们的append 或者 针对string的+ 操作都会让string内部的数据域动态增加,而动态增加的...