Jimmypony的技术汇总区
很多都不会,很多都不懂,不要浮躁,静心学习
posts - 51,comments - 22,views - 75074

直接贴代码

复制代码
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Xml;

namespace Myshop.MyShop
{
    
public class XMLEditor
    {
        
/// <summary>
        
/// 删除节点
        
/// </summary>
        
/// <param name="xmlPath"></param>
        
/// <param name="id"></param>
        
/// <returns></returns>
        public static bool DeleteNode(string xmlPath, string id)
        {
            XmlDocument xml 
= new XmlDocument();            //新建xml文档
            xml.Load(xmlPath);                              //载入文件
            XmlNode root = xml.SelectSingleNode("root");    //获取根节点    
            XmlNode doc = null;                             //定义节点
            GetXmlDoc(root, id, ref doc);                   //获取要处理的节点
            if (doc != null)
            {
                doc.ParentNode.RemoveChild(doc);            
//删除自己
                xml.Save(xmlPath);                          //保存
                return true;
            }
            
else
                
return false;
        }

        
/// <summary>
        
/// 添加新节点
        
/// </summary>
        
/// <param name="xmlPath"></param>
        
/// <param name="level"></param>
        
/// <param name="fatherid"></param>
        
/// <param name="name"></param>
        
/// <returns></returns>
        public static bool AddNode(string xmlPath, string level, string fatherid, string name)
        {
            XmlDocument xml 
= new XmlDocument();
            xml.Load(xmlPath);
            XmlNode root 
= xml.SelectSingleNode("root");
            XmlElement element 
= xml.CreateElement("type");         //新建节点
            element.SetAttribute("name", name);                     //添加标签
            element.SetAttribute("level", level);                   
            element.SetAttribute(
"fatherid", fatherid);
            XmlNode doc 
= null;
            GetXmlDoc(root, fatherid,
ref doc);
            
if (doc != null)
            {
                doc.AppendChild(element 
as XmlNode);                //添加child
                xml.Save(xmlPath);
                
return true;
            }
            
else
                
return false;            
        }

        
/// <summary>
        
/// 编辑节点
        
/// </summary>
        
/// <param name="xmlPath"></param>
        
/// <param name="id"></param>
        
/// <param name="level"></param>
        
/// <param name="fatherid"></param>
        
/// <param name="name"></param>
        
/// <returns></returns>
        public static bool EditNode(string xmlPath, string id, string level, string fatherid, string name)
        {
            XmlDocument xml 
= new XmlDocument();
            xml.Load(xmlPath);
            XmlNode root 
= xml.SelectSingleNode("root");
            XmlNode doc
=null;
            GetXmlDoc(root, fatherid,
ref doc);
            
if (doc != null)
            {
                XmlElement element 
= doc as XmlElement;             //XmlNode转XmlElement更新
                element.SetAttribute("id", id);
                element.SetAttribute(
"name", name);
                element.SetAttribute(
"level", level);
                element.SetAttribute(
"fatherid", fatherid);
                xml.Save(xmlPath);
                
return true;
            }
            
else
                
return false;
        }

        
/// <summary>
        
/// 递归查找节点
        
/// </summary>
        
/// <param name="node">起始节点</param>
        
/// <param name="id">attr</param>
        private static void GetXmlDoc(XmlNode node,string id,ref XmlNode myNode)
        {
            
foreach (XmlNode xml in node.ChildNodes)
            {
                
if (xml.Attributes["id"].Value == id)
                    myNode 
= xml;
                
else
                    GetXmlDoc(xml, id, 
ref myNode);
            }
        }
    }
}
Code
复制代码
posted on   Jim~  阅读(456)  评论(5编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
< 2008年9月 >
31 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 1 2 3 4
5 6 7 8 9 10 11

点击右上角即可分享
微信分享提示