如何从C#中的XML中删除元素

时间:2016-01-25 11:50:54

标签: c# xml

我有以下XML文件:

<HOUSE>
  <LOCATION>Random</LOCATION>
  <SERVER>A</SERVER>
  <SERVER>B</SERVER>
  <SERVER>C</SERVER>
  <SERVER>D</SERVER>
  <SERVER>E</SERVER>
  <SERVER>F</SERVER>
</HOUSE>

我使用存储SERVER项目的ListBox,我想添加一个从列表框和XML文件中删除所选项目的函数。 我尝试过使用:

doc.Element("HOUSE")
   .Element("SERVER")
   .Element(Serverslstbox.SelectedItem.ToString())
   .Remove();

XmlElement root = doc.DocumentElement;
        XmlNode remove= root.SelectSingleNode(Serverslstbox.SelectedItem.ToString());
        doc.ParentNode.RemoveChild(remove);

以及许多其他选项,但它们似乎都不起作用,有什么建议吗?

1 个答案:

答案 0 :(得分:0)

假设Serverslstbox.SelectedItem包含服务器的名称,例如&#34; A&#34;,&#34; B&#34; ...

然后你需要使用Where按照它们的值过滤元素:

doc.Element("HOUSE")
    .Elements("SERVER")
    .Where(x => x.Value == Serverslstbox.SelectedItem.ToString())
    .Remove();

以上查询将删除所有&#34; SERVER&#34; &#34; HOUSE&#34;内的元素值等于所选项目值的元素。

要将结果保存到文件,请使用Save方法,如下所示:

doc.Save(filename);