C# 从Xml C中删除选定的树节点#

C# 从Xml C中删除选定的树节点#,c#,xml,treeview,C#,Xml,Treeview,我正在使用C#处理Winform,我已经从XML填充了Treeview,需要删除Treeview所选节点(运行时)。删除事件: TreeNode node = treeView1.SelectedNode; if (treeView1.SelectedNode != null) { if (treeView1.SelectedNode.Parent == null) treeView1.SelectedNode.Remove(); else if (treeVie

我正在使用C#处理Winform,我已经从XML填充了Treeview,需要删除Treeview所选节点(运行时)。删除事件:

TreeNode node = treeView1.SelectedNode;
if (treeView1.SelectedNode != null)
{
    if (treeView1.SelectedNode.Parent == null)
        treeView1.SelectedNode.Remove();
    else if (treeView1.SelectedNode.Parent.Nodes.Count == 1)
        treeView1.SelectedNode.Parent.Remove();
    else
        treeView1.SelectedNode.Remove();
}

XDocument doc = XDocument.Load("menu.xml");

var xElement = (from q in doc.Elements("root")
                where q.Attribute("quick").Value == node.Tag.ToString()
                select q);
foreach (var a in xElement) 
    a.Remove();
doc.Save("menu.xml");
其中,我的XML文件是:

<?xml version="1.0" encoding="utf-8"?>
<root>
  <quick title="1st Node" />
</root>

我了解到,从上面的xml中,您想要删除Node:quick。试试这个:

doc.Root.Descendants("quick").FirstOrDefault().Remove();
如果只有一个“快速”节点,则此操作有效

但是可以有多个“快速”节点,因此要在xml中匹配所选节点,需要将该节点的唯一属性值与所选节点的相同属性值匹配

 doc.Root.Descendants("quick")
                           .First(x => x.Attribute("title").Value == node.Tag["title"].Tostring())
                           .Remove();

您当前的代码有什么问题吗?非常感谢Deepti…:)