使用MVVM应用程序中的RSS源加载Xdocument

使用MVVM应用程序中的RSS源加载Xdocument

问题描述:

我正在学习MVVM &通过转换简单的wpf RSS应用程序将Linq转换为xml。最初,我使用XmlDataProvider来加载本地xml文件或RSS网址。我现在使用下面的代码可以很好地加载本地xml文件,但是当它的URL发生时会抛出“FileNotFoundException”。在调试过程中,我在(字符串RSS_URL)中看到正确的URL地址,但找不到该文件。我最初的搜索引导我到Webclient & HttpWebRequest,但我没有与他们取得任何成功。我在正确的轨道上吗?任何代码或教程链接可用?使用MVVM应用程序中的RSS源加载Xdocument

public static List<RSSItem> Load(string RSS_URL) 
    { 
     if (!File.Exists(RSS_URL)) 
     { 
      throw new FileNotFoundException("Datasource file could not be found", RSS_URL); 
     } 

     var rssfiles = XDocument.Load(RSS_URL).Descendants("item").Select(
      x => new RSSItem(
       (string)x.Element("title"), 
       (string)x.Element("link"), 
       (string)x.Element("description"))); 

     return rssfiles.ToList(); 
    } 

谢谢

+0

我会建议使用['XmlDocument'](http://msdn.microsoft.com/en-us/library /system.xml.xmldocument.aspx),而是更好地集成到绑定系统中。 –

+0

@ H.B。 “更好地融入绑定系统”是什么意思? –

+0

@DanEsparza:请参阅['Binding.XPath'文档](http://msdn.microsoft.com/en-us/library/system.windows.data.binding.xpath.aspx),您只能将它与'XmlDocument'系列。 –

XDocument.Load()将接受没有任何问题的URL。你的代码中的问题是你使用File.Exists()来确定他的URL是否有效。 File.Exists()只接受文件系统路径,而不是URI。

快速的附加信息:Load()方法依赖于底层的XmlReader和对Create()的调用。如果资源(本例中为URL)不存在,则会抛出WebException,指示该资源不存在。

XDocument.Load信息: http://msdn.microsoft.com/en-us/library/bb343181.aspx

XmlReader.Create信息: http://msdn.microsoft.com/en-us/library/w8k674bf.aspx

+0

太棒了 - 你怎么知道这样的事情!我不知道如果没有你的帮助,我会怎么想。很棒。谢谢。 –

您所使用的XDocument.Load超载是专门为从文件加载。您将不得不从RSS提要下载本地XML数据。查看MSDN文档here,了解如何从流中读取数据等,这可能更适合您的需要。