如何删除XML中的最后一个节点? C#

时间:2014-05-30 14:09:32

标签: c# xml nodes

我正在尝试从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个节点,每次添加新节点时,必须删除最后一个节点。

2 个答案:

答案 0 :(得分:2)

你可以试试这个

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

答案 1 :(得分:0)

听起来你想要这样的东西:

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...