所以,我正在努力制作一个" Recent Files"我的WPF应用程序中的功能是使用C#的XML类。
基本上,程序需要读取每个节点并获取文件的URI以生成菜单项。
问题是,r.Value没有给我一个字符串可以使用,我开始质疑这段代码是否会起作用。
XmlTextReader r = new XmlTextReader(this.PathToSpecialFolder + @"\" + Application.CompanyName + @"\" + Application.ProductName + @"\Recent.xml");
int count = 0;
while (r.Read())
{
switch (r.NodeType)
{
case XmlNodeType.Element:
if (r.Name == "Path")
{
count++;
if (count <= 5)
{
MenuItem m = new MenuItem() { Header = r.Value };
openRecentMenuItem.Items.Add(m);
//r.Value populates nothing
}
}
break;
}
}
r.Close();
在相关主题上,我还尝试将其发送到XML文件仅存储五个节点的位置。我想......
如何删除最后一个节点?这是我的XML文件结构:
<?xml version="1.0" encoding="utf-8"?>
<RecentFiles>
<File>
<Path>Path goes here.</Path>
</File>
</RecentFiles>
更新:
下面的代码解决了我的阅读问题(根据John的建议),但是,我仍然无法弄清楚如何在写入时删除最后一个节点。在这种情况下我不想使用Linq,因此首选使用XmlReader的解决方案,谢谢。
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();
}