从Xml C#中删除所选的TreeNode

时间:2014-11-04 09:05:56

标签: c# xml treeview

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

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>

1 个答案:

答案 0 :(得分:1)

据我所知,从上面的xml中你想删除Node:quick。试试这个:

doc.Root.Descendants("quick").FirstOrDefault().Remove();

如果您只有一个&#39; quick&#39;节点

但可以有多个&#39;快速&#39;节点,所以要使所选节点在xml中匹配,你需要将该节点的唯一属性值与所选节点的相同属性值相匹配。

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