zoukankan      html  css  js  c++  java
  • 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出现希望大家多多指点....

    工欲善其事,必先利其器。作为一名开发者,灵活运用技巧可以给自己带来事半功倍的效果。如果你是一名.NET程序员,不妨来看看我的博客分享吧。
  • 相关阅读:
    匿名变量
    Vue父子组件传值与非父子传值
    TCP三次握手分析
    @media screen 响应式布局
    H5新增多媒体标签
    npm+node+vue配置一套带走
    vue+echarts全国疫情地图
    js本地时间格式化
    vue iview分页
    Vue打包后访问静态资源路径问题
  • 原文地址:https://www.cnblogs.com/RealmKing/p/3414329.html
Copyright © 2011-2022 走看看