• xml操作类


    using System;
    using System.Data;
    using System.Web;
    using System.Xml;
    
    
    namespace HuLangCms
    {
        /// <summary>
        /// 类名:xml操作类
        /// </summary>
        public class ExeCuteXml
        {
            private XmlDocument xmlDoc;
            public ExeCuteXml()
            {
    
            }
    
            /// <summary>
            /// 加载xml文件
            /// </summary>
            /// <param name="path">xml文件的物理路径</param>
            private void LoadXml(string path, string node_root)
            {
                xmlDoc = new XmlDocument();
                //判断xml文件是否存在
                if (!System.IO.File.Exists(path))
                {
                    //创建xml 声明节点
                    XmlNode xmlnode = xmlDoc.CreateNode(System.Xml.XmlNodeType.XmlDeclaration, "", "");
                    //添加上述创建和 xml声明节点
                    xmlDoc.AppendChild(xmlnode);
                    //创建xml dbGuest 元素(根节点)
                    XmlElement xmlelem = xmlDoc.CreateElement("", node_root, "");
                    xmlDoc.AppendChild(xmlelem);
                    try
                    {
                        xmlDoc.Save(path);
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                    xmlDoc.Load(path);
                }
                else
                {
                    //加载xml文件
                    xmlDoc.Load(path);
                }
            }
    
            /// <summary>
            /// 添加xml子节点
            /// </summary>
            /// <param name="path">xml文件的物理路径</param>
            /// <param name="node_root">根节点名称</param>
            /// <param name="node_name">添加的子节点名称</param>
            /// <param name="node_text">子节点文本</param>
            public void addElement(string path, string node_root, string node_name, string node_text, string att_name, string att_value)
            {
                LoadXml(path, node_root);
    
                XmlNodeList nodeList = xmlDoc.SelectSingleNode(node_root).ChildNodes;//获取bookstore节点的所有子节点
                //判断是否有节点,有节点就遍历所有子节点,看看有没有重复节点,没节点就添加一个新节点
                if (nodeList.Count > 0)
                {
                    foreach (XmlNode xn in nodeList)//遍历所有子节点 
                    {
                        XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型 
                        if (xe.GetAttribute(att_name) != att_value)
                        {
                            XmlNode xmldocSelect = xmlDoc.SelectSingleNode(node_root);   //选中根节点
                            XmlElement son_node = xmlDoc.CreateElement(node_name);    //添加子节点 
                            son_node.SetAttribute(att_name, att_value);     //设置属性
                            son_node.InnerText = node_text;    //添加节点文本
                            xmldocSelect.AppendChild(son_node);       //添加子节点
                            xmlDoc.Save(path);          //保存xml文件
                            break;
                        }
                    }
    
                }
                else
                {
                    XmlNode xmldocSelect = xmlDoc.SelectSingleNode(node_root);   //选中根节点
                    XmlElement son_node = xmlDoc.CreateElement(node_name);    //添加子节点 
                    son_node.SetAttribute(att_name, att_value);     //设置属性
                    son_node.InnerText = node_text;    //添加节点文本
                    xmldocSelect.AppendChild(son_node);       //添加子节点
                    xmlDoc.Save(path);          //保存xml文件
                }
            }
    
            /// <summary>
            /// 修改节点的内容
            /// </summary>
            /// <param name="path">xml文件的物理路径</param>
            /// <param name="node_root">根节点名称</param>
            /// <param name="new_text">节点的新内容</param>
            /// <param name="att_name">节点的属性名</param>
            /// <param name="att_value">节点的属性值</param>
            public void UpdateElement(string path, string node_root, string new_text, string att_name, string att_value)
            {
                LoadXml(path, node_root);
                XmlNodeList nodeList = xmlDoc.SelectSingleNode(node_root).ChildNodes;//获取bookstore节点的所有子节点 
                foreach (XmlNode xn in nodeList)//遍历所有子节点 
                {
                    XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型 
                    if (xe.GetAttribute(att_name) == att_value)
                    {
                        xe.InnerText = new_text;    //内容赋值
                        xmlDoc.Save(path);//保存 
                        break;
                    }
                }
    
            }
    
            /// <summary>
            /// 删除节点
            /// </summary>
            /// <param name="path">xml文件的物理路径</param>
            /// <param name="node_root">根节点名称</param>
            /// <param name="att_name">节点的属性名</param>
            /// <param name="att_value">节点的属性值</param>
            public void deleteNode(string path, string node_root, string att_name, string att_value)
            {
    
                LoadXml(path, node_root);
    
                XmlNodeList nodeList = xmlDoc.SelectSingleNode(node_root).ChildNodes;
                XmlNode root = xmlDoc.SelectSingleNode(node_root);
    
                foreach (XmlNode xn in nodeList)
                {
                    XmlElement xe = (XmlElement)xn;
    
                    if (xe.GetAttribute(att_name) == att_value)
                    {
                        //xe.RemoveAttribute("name");//删除name属性 
                        xe.RemoveAll();//删除该节点的全部内容 
                        root.RemoveChild(xe);
                        xmlDoc.Save(path);//保存 
                        break;
                    }
    
                }
            }
        }
    }
    

  • 相关阅读:
    error 65: access violation at 0x40021000 : no 'read' permission
    我的防Q+
    jquery judge element exist
    eclipse html 打开方式
    Java用JSoup组件提取asp.net webform开发网页的viewstate相关相关参数
    Chrome 启动参数列表
    Fixed the bug:while running alert/confirm in javascript the chrome freezes
    the confilict between validation and readonly in jquery
    Difference between prop and attr in different version of jquery
    Tomcat启动错误一例org.apache.catalina.core.StandardContext resources Start Error starting static Resources
  • 原文地址:https://www.cnblogs.com/hulang/p/1922298.html
Copyright © 2020-2023  润新知