如何在XML中删除最后一个节点?c#

本文关键字:最后一个 节点 删除 XML | 更新日期: 2023-09-27 18:06:01

我试图从XML文件中删除最后一个节点,但找不到任何好的答案。下面是我的代码:

XmlReader x = XmlReader.Create(this.PathToSpecialFolder + @"'" + Application.CompanyName + @"'" + Application.ProductName + @"'Recent.xml");
int c = 0;
while (x.Read())
{
    if (x.NodeType == XmlNodeType.Element && x.Name == "Path") 
    {
        c++;
        if (c <= 10)
        {
            MenuItem m = new MenuItem() { Header = x.ReadInnerXml() };
            m.Click += delegate
            {
            };
            openRecentMenuItem.Items.Add(m);
        }
    }
}
x.Close();

我的XML节点结构如下…

<RecentFiles>
    <File>
        <Path>Text Path</Path>
    </File>
</RecentFiles>

在我的情况下,最多有10个节点,每次添加一个新节点,最后一个节点必须删除。

如何在XML中删除最后一个节点?c#

你可以试试这个

XmlDocument doc = new XmlDocument();
doc.Load(fileName);
XmlNodeList nodes = doc.SelectNodes("/RecentFiles/File");
nodes[nodes.Count].ParentNode.RemoveChild(nodes[nodes.Count]);
doc.Save(fileName);

听起来你想要这样做:

var doc = XDocument.Load(path);
var lastFile = doc.Descendants("File").LastOrDefault();
if (lastFile != null)
{
    lastFile.Remove();
}
// Now save doc or whatever you want to do with it...