• XML 操作类


    using System;
    using System.Data;
    using System.Configuration;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using System.Xml;
    using System.IO;
    /// <summary>
    /// Summary description for XMLReSovle
    /// </summary>
    public class XMLReSovle
    {
        public XMLReSovle()
        {
        }
        private XmlDocument xmlDoc = new XmlDocument();
        private string xmlFileName = null;
        public string FilePath
        {
            set { xmlFileName = value; }
        }
        //创建XML操作对象
        public void OpenXML()
        {
            xmlDoc.Load(xmlFileName);
        }
        #region 读取指定节点的指定属性值
        /// <summary>
        /// 功能:
        /// 读取指定节点的指定属性值
        ///
        /// 参数:
        /// 参数一:节点名称
        /// 参数二:此节点的属性
        /// </summary>
        /// <param name="strNode"></param>
        /// <param name="strAttribute"></param>
        /// <returns></returns>
        public string GetXmlNodeValue(string strNode, string strAttribute)
        {
            string strReturn = "";
            try
            {
                //根据指定路径获取节点
                XmlNode xmlNode = xmlDoc.SelectSingleNode(strNode);
                //获取节点的属性,并循环取出需要的属性值
                XmlAttributeCollection xmlAttr = xmlNode.Attributes;
                for (int i = 0; i < xmlAttr.Count; i++)
                {
                    if (xmlAttr.Item(i).Name == strAttribute)
                        strReturn = xmlAttr.Item(i).Value;
                }
            }
            catch (XmlException xmle)
            {
                throw xmle;
            }
            return strReturn;
        }
        #endregion
        #region 读取指定节点的值
        /// <summary>
        /// 功能:
        /// 读取指定节点的值
        ///
        /// 参数:
        /// 参数:节点名称
        /// </summary>
        /// <param name="strNode"></param>
        /// <returns></returns>
        public string GetXmlNodeValue(string strNode)
        {
            string strReturn = String.Empty;
            try
            {
                //根据路径获取节点
                XmlNode xmlNode = xmlDoc.SelectSingleNode(strNode);
                strReturn = xmlNode.InnerText;
            }
            catch (XmlException xmle)
            {
                System.Console.WriteLine(xmle.Message);
            }
            return strReturn;
        }
        #endregion
        #region 设置节点值
        /// <summary>
        /// 功能:
        /// 设置节点值
        ///
        /// 参数:
        ///    参数一:节点的名称
        ///    参数二:节点值
        ///    
        /// </summary>
        /// <param name="strNode"></param>
        /// <param name="newValue"></param>
        public void SetXmlNodeValue(string xmlNodePath, string xmlNodeValue)
        {
            try
            {
                //根据指定路径获取节点
                XmlNode xmlNode = xmlDoc.SelectSingleNode(xmlNodePath);
                //设置节点值
                xmlNode.InnerText = xmlNodeValue;
            }
            catch (XmlException xmle)
            {
                throw xmle;
            }
        }
        #endregion
        #region 设置节点的属性值
        /// <summary>
        /// 功能:
        /// 设置节点的属性值
        ///
        /// 参数:
        /// 参数一:节点名称
        /// 参数二:属性名称
        /// 参数三:属性值
        ///
        /// </summary>
        /// <param name="xmlNodePath"></param>
        /// <param name="xmlNodeAttribute"></param>
        /// <param name="xmlNodeAttributeValue"></param>
        public void SetXmlNodeValue(string xmlNodePath, string xmlNodeAttribute, string xmlNodeAttributeValue)
        {
            try
            {
                //根据指定路径获取节点
                XmlNode xmlNode = xmlDoc.SelectSingleNode(xmlNodePath);
                //获取节点的属性,并循环取出需要的属性值
                XmlAttributeCollection xmlAttr = xmlNode.Attributes;
                for (int i = 0; i < xmlAttr.Count; i++)
                {
                    if (xmlAttr.Item(i).Name == xmlNodeAttribute)
                    {
                        xmlAttr.Item(i).Value = xmlNodeAttributeValue;
                        break;
                    }
                }
            }
            catch (XmlException xmle)
            {
                throw xmle;
            }
        }
        #endregion
        /// <summary>
        /// 获取XML文件的根元素
        /// </summary>
        public XmlNode GetXmlRoot()
        {
            return xmlDoc.DocumentElement;
        }
        /// <summary>
        /// 在根节点下添加父节点
        /// </summary>
        public void AddParentNode(string parentNode)
        {
            XmlNode root = GetXmlRoot();
            XmlNode parentXmlNode = xmlDoc.CreateElement(parentNode);
            root.AppendChild(parentXmlNode);
        }
        /// <summary>
        /// 向一个已经存在的父节点中插入一个子节点
        /// </summary>
        public void AddChildNode(string parentNodePath, string childNodePath)
        {
            XmlNode parentXmlNode = xmlDoc.SelectSingleNode(parentNodePath);
            XmlNode childXmlNode = xmlDoc.CreateElement(childNodePath);
            parentXmlNode.AppendChild(childXmlNode);
        }
        /// <summary>
        /// 向一个节点添加属性
        /// </summary>
        public void AddAttribute(string NodePath, string NodeAttribute)
        {
            XmlAttribute nodeAttribute = xmlDoc.CreateAttribute(NodeAttribute);
            XmlNode nodePath = xmlDoc.SelectSingleNode(NodePath);
            nodePath.Attributes.Append(nodeAttribute);
        }
        /// <summary>
        /// 删除一个节点的属性
        /// </summary>
        public void DeleteAttribute(string NodePath, string NodeAttribute, string NodeAttributeValue)
        {
            XmlNodeList nodePath = xmlDoc.SelectSingleNode(NodePath).ChildNodes;
            foreach (XmlNode xn in nodePath)
            {
                XmlElement xe = (XmlElement)xn;
                if (xe.GetAttribute(NodeAttribute) == NodeAttributeValue)
                {
                    xe.RemoveAttribute(NodeAttribute);//删除属性
                }
            }
        }
        /// <summary>
        ///  删除一个节点
        /// </summary>
        /// <param name="tempXmlNode">给定结点</param>
        public void DeleteXmlNode(string tempXmlNode)
        {
            //XmlNodeList xmlNodePath=xmlDoc.SelectSingleNode(tempXmlNode).ChildNodes;
            XmlNode xmlNodePath = xmlDoc.SelectSingleNode(tempXmlNode);
            xmlNodePath.ParentNode.RemoveChild(xmlNodePath);
            //foreach(XmlNode xn in xmlNodePath)
            //{
            //XmlElement xe=(XmlElement)xn;
            //xe.RemoveAll();
            //xe.RemoveChild(xn);
            //xn.RemoveAll();
            //if(xe.HasChildNodes)
            //{
            //foreach(XmlNode xn in xe)
            //{
            //xn.RemoveAll();//删除所有子节点和属性
            //}
            //}
            //}
        }
        #region 保存XML文件
        /// <summary>
        /// 功能:
        /// 保存XML文件
        /// </summary>
        public void SaveXmlDocument()
        {
            try
            {
                //保存设置的结果
                xmlDoc.Save(xmlFileName);
            }
            catch (XmlException xmle)
            {
                throw xmle;
            }
        }
        #endregion
        #region 保存XML文件
        /// <summary>
        /// 功能:
        /// 保存XML文件
        /// </summary>
        public void SaveXmlDocument(string tempXMLFilePath)
        {
            try
            {
                //保存设置的结果
                xmlDoc.Save(tempXMLFilePath);
            }
            catch (XmlException xmle)
            {
                throw xmle;
            }
        }
        #endregion
        #region 创建一个XML 文件
        public bool CreateXMLFile(string xPath)
        {
            FileStream file = new FileStream("~/aaa.xml", FileMode.Create);
        }
        #endregion
    }
  • 相关阅读:
    iOS强引用和弱引用
    HTTP和Socket的区别
    iOS日期加减
    iOS判断日期A是否在日期B到日期C之间
    分布式锁与实现(一)——基于Redis实现 【比较靠谱】
    Redisson实现分布式锁
    Redisson分布式锁实现
    从redis中取值如果不存在设置值,使用Redisson分布式锁【我】以及不使用锁的方式
    redisson整合spring
    如何优雅地用Redis实现分布式锁?
  • 原文地址:https://www.cnblogs.com/MySpace/p/1599712.html
Copyright © 2020-2023  润新知