使用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();
}
谢谢
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
太棒了 - 你怎么知道这样的事情!我不知道如果没有你的帮助,我会怎么想。很棒。谢谢。 –
我会建议使用['XmlDocument'](http://msdn.microsoft.com/en-us/library /system.xml.xmldocument.aspx),而是更好地集成到绑定系统中。 –
@ H.B。 “更好地融入绑定系统”是什么意思? –
@DanEsparza:请参阅['Binding.XPath'文档](http://msdn.microsoft.com/en-us/library/system.windows.data.binding.xpath.aspx),您只能将它与'XmlDocument'系列。 –