直接贴代码
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);
}
}
}
}
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