XmlTextReader C#读写问题

时间:2014-05-22 03:58:48

标签: c# xml wpf

所以,我正在努力制作一个" 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文件仅存储五个节点的位置。我想......

  1. 获取节点数(我已经完成)
  2. 检查新节点+节点数是否> 5,如果是,则前置新节点并删除最后一个节点。否则,只需添加新节点
  3. 如何删除最后一个节点?这是我的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();
    
    }
    

0 个答案:

没有答案