2017-04-14 136 views
1

我在C#WinFroms级别写入和读取xml文件。另外我想有一个函数来删除给定内容的元素。 我的XML格式:C#:从xml中删除一个元素

<libraryImages> 
    <imageLink>*link1*</imageLink> 
    <imageLink>*link2*</imageLink> 
</libraryImages> 

功能体:

System.Xml.Linq.XDocument xdoc = System.Xml.Linq.XDocument.Load("XmlData.xml"); 
      xdoc.Root.Elements("imageLink").Select(el => el).Where(el => el.Value == pathToRemove).ToList().ForEach(el => el.Remove()); 

作为 'pathToRemove' 参数我通过例如LINK1。 问题是 - 这不会从xml中删除此元素 - 因此,在重新启动我的应用程序后,我的库的内容与之前一样,就好像我没有删除任何项目一样。 为什么不能工作?我浏览了很多stackoverflow问题,但我什么也没找到。

回答

2

你应该在内存中的操作后,更新XML文件:

// read file from disc and build in-memory representation of xml 
var xdoc = XDocument.Load("XmlData.xml"); 

// modify in-memory representation 
xdoc.Root.Elements("imageLink").Where(el => el.Value == pathToRemove).Remove(); 

// save modified representation back to disck 
xdoc.Save("XmlData.xml"); 
+0

工程就像一个魅力,谢谢! –