C#:从xml中删除一个元素

时间:2017-04-14 15:01:20

标签: c# xml linq linq-to-xml

我写信并从C#WinFroms级别读取xml文件。另外,我希望有一个函数来删除给定内容的元素。 我的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());

作为一条路径去除&#39;参数我传递 link1 。 问题是 - 这不会从xml中删除这个元素 - 因此在我重新启动我的应用程序后,我的库的内容就像以前一样,好像我没有删除任何项目。 为什么这不起作用?虽然我一无所获,但我浏览了很多stackoverflow问题。

1 个答案:

答案 0 :(得分: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");