C# XmlTextReader C的读写问题
因此,我试图通过使用C的XML类在我的WPF应用程序中创建一个最新的文件特性 基本上,程序需要读取每个节点并获取文件的URI以生成菜单项 问题是,r.Value并没有给我一个字符串来处理,我开始怀疑这段代码是否能正常工作C# XmlTextReader C的读写问题,c#,xml,wpf,C#,Xml,Wpf,因此,我试图通过使用C的XML类在我的WPF应用程序中创建一个最新的文件特性 基本上,程序需要读取每个节点并获取文件的URI以生成菜单项 问题是,r.Value并没有给我一个字符串来处理,我开始怀疑这段代码是否能正常工作 XmlTextReader r = new XmlTextReader(this.PathToSpecialFolder + @"\" + Application.CompanyName + @"\" + Application.ProductName + @"\Recent.
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文件只存储五个节点的位置。我想
获取我已经完成的节点数
检查新节点+节点计数是否>5,如果是,请预先添加新节点并删除最后一个节点。否则,只需添加新节点
如何删除最后一个节点?以下是我的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();
}
仅供参考,您不应使用新的XmlTextReader或XmlTextWriter。自.NET 2.0以来,它们一直被弃用。使用XmlReader.Create或XmlWriter.Create。另外,为什么不使用LINQ to XML?