我正在通过转换一个简单的 wpf RSS 应用程序来学习 MVVM 和 Linq to xml。最初,我使用 XmlDataProvider 加载本地 xml 文件或 RSS url。我现在正在使用下面的代码,它可以很好地加载本地 xml 文件,但是当它是一个 url 时抛出“FileNotFoundException”。在调试过程中,我在(字符串 RSS_URL)中看到了正确的 url 地址,但找不到该文件。我最初的搜索使我找到了 Webclient 和 HttpWebRequest,但我没有成功使用它们。我在正确的轨道上吗?有可用的代码或教程链接吗?
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();
}
谢谢
最佳答案
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
关于c# - 在 MVVM 应用程序中使用 RSS 提要加载 Xdocument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8990474/