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

标签:
xml
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端