无法删除XML中共享相同属性值的所有元素

时间:2014-05-20 10:10:24

标签: c# xml linq

我想一次删除所有具有相同名称的元素。即使我有多个具有相同名称的元素,我当前的方法也会一次删除一个。

XDocument doc = XDocument.Load("D:\\test.xml");
var course = new XElement("Course", 
                          new XAttribute("Name", cname),
                          new XAttribute("Code", ccode),
                          new XAttribute("Length", clenght));                
doc.Element("Departments").Element("Department1").Add(course);
doc.Save("D:\\test.xml");

这是我目前的删除代码: string sss是从文本框中获取的文本。

remove(string sss)

XDocument doc = XDocument.Load("D:\\test.xml");
IEnumerable<XElement> elList = 
    from el in doc.Descendants("Deparment1").Elements("Course")
    where el.Attribute("Name").Value == sss
    select el;

// this should filter elements with same name attribute value 
foreach (XElement el in elList)
{
    el.Remove();
    doc.Save("D:\\test.xml");
}
// this should remove them all and update the xml file 

@Andrei V如果我把doc.save放在foreach之外它不会改变

1 个答案:

答案 0 :(得分:0)

doc.Descendants("Deparment1").Elements("Course")
   .Where(el=>el.Attribute("Name").Value == sss)
   .Remove();