Jimmypony的技术汇总区
很多都不会,很多都不懂,不要浮躁,静心学习

直接贴代码

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 2008-09-02 16:15  Jim~  阅读(455)  评论(5编辑  收藏  举报