2017-04-14 208 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

工程就像一個魅力,謝謝! –