我正在学习MVVM& Linq to xml通过转换一个简单的wpf RSS应用程序。最初,我使用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();
}
谢谢
答案 0 :(得分:2)
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
答案 1 :(得分:0)
您正在使用的XDocument.Load
重载专门用于从文件加载。您必须从RSS源下载才能在本地获取XML数据。查看MSDN文档here,了解从流中读取的替代方法,这可能更适合您的需求。