6

我有一个 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");

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

4

1 回答 1

13

编辑:好的,通过进一步的编辑,你想做什么会更清楚,而且碰巧它比你做的要容易得多,这要归功于扩展Remove方法IEnumerable<T> where T : XNode

string target = txt.Text.Trim();
doc.Descendants("start")
   .Elements("site")
   .Where(x => x.Value == target)
   .Remove();

这就是你所需要的。

于 2012-11-20T22:43:25.970 回答