使用LINQ从xml中删除元素

时间:2012-11-20 22:41:36

标签: c# xml xml-parsing linq-to-xml

您好我有一个xml文件,如:

<starting>
   <start>
      <site>mushfiq.com</site>
      <site>mee.con</site>
      <site>ttttt.co</site>
      <site>jkjhkhjkh</site>
      <site>jhkhjkjhkhjkhjkjhkh</site>
     <site>dasdasdasdasdasdas</site>
 </start>
</starting>

现在我需要删除任何<site>...</site>,并且会从文本框中随机提供值。

这是我的代码:

XDocument doc = XDocument.Load(@"AddedSites.xml");                
var deleteQuery = from r in doc.Descendants("start") where r.Element("site").Value == txt.Text.Trim() select r;
foreach (var qry in deleteQuery)
{
    qry.Element("site").Remove();
}
doc.Save(@"AddedSites.xml");

如果我将第一个元素的值放在文本框中,那么它可以删除它,但如果我放置除第一个元素值之外的任何元素值,它就无法删除!我需要我将任何元素的任何值...因为它可以是第二元素或第三或第四等等......任何人都可以帮助我吗?谢谢你提前!

1 个答案:

答案 0 :(得分:10)

编辑:好的,通过进一步编辑,您可以更清楚地了解自己想要做什么,并且由于IEnumerable<T> where T : XNode string target = txt.Text.Trim(); doc.Descendants("start") .Elements("site") .Where(x => x.Value == target) .Remove(); 上的Remove extension method,因此它比您实现它要容易得多:

{{1}}

这就是你所需要的一切。