如何删除子节点

时间:2015-04-29 17:48:09

标签: c# xml linq

我想删除具有我从Request.QueryString["removect"]获得的值的城市节点,并根据特定用户ID说明<user Id="4/29/2015 6:11:34 PM">

<Users>
   <user Id="4/28/2015 11:29:44 PM">
    <city>Moga</city>
    <city>Rupnagar</city>
    <city>Fatehgarh Sahib</city>
</user>
  <user Id="4/29/2015 10:59:06 AM">
    <city>Bathinda</city>
    <city>Pathankot</city>
  </user>
  <user Id="4/29/2015 6:11:34 PM">
    <city>Pathankot</city>
    <city>Tarn Taran</city>

  </user>
</Users>

我用来完成此任务的代码如下:

xmlDocument.Descendants("user").Where(x => (string)x.Attribute("Id") == usrCookieId)
 .Elements("city")
 .Where(x => (string)x.Value ==Request.QueryString["removect"]).Remove();                            

代码执行但没有任何反应。

1 个答案:

答案 0 :(得分:0)

试试这个: -

我已经开始使用city,然后使用其父级user过滤您的条件,由于x由城市元素组成,我们可以直接过滤它。现在,我使用First仅获取第一个匹配元素,一旦我们需要使用city节点,我们需要使用的是Remove

XDocument xmlDocument= XDocument.Load("YourXMLFile");
xmlDocument.Descendants("city").First(x => (string)x.Parent.Attribute("Id") == usrCookieId 
           && (string)x == Request.QueryString["removect"]).Remove();
xmlDocument.Save("YourXMLFilePath");