C# 在MVVM应用程序中加载带有RSS提要的Xdocument

C# 在MVVM应用程序中加载带有RSS提要的Xdocument,c#,wpf,mvvm,linq-to-xml,C#,Wpf,Mvvm,Linq To Xml,通过转换一个简单的wpf RSS应用程序,我正在学习将MVVM和Linq转换为xml。最初,我使用XmlDataProvider加载本地xml文件或RSS URL。我现在使用下面的代码,可以很好地加载本地xml文件,但是当它是url时抛出FileNotFoundException。在调试期间,我在字符串RSS_url中看到了正确的url地址,但没有找到该文件。我最初的搜索让我找到了Webclient&HttpWebRequest,但我还没有成功地找到它们。我走对了吗?有代码或教程链接可用吗 pu

通过转换一个简单的wpf RSS应用程序,我正在学习将MVVM和Linq转换为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重载专门用于从文件加载。您必须从RSS提要下载才能在本地获取XML数据。查看MSDN文档,寻找替代方法,例如从流中读取,这可能更适合您的需要。

XDocument.Load将毫无问题地接受URL。代码中的问题是您正在使用File.Exists来确定URL是否有效。Exists只接受文件系统路径,而不接受uri

快速补充信息:Load方法依赖于一个底层XmlReader和一个Create调用。如果在本例中URL所在的资源不存在,将引发WebException,指示该资源不存在

XDocument.Load信息:

XmlReader.创建信息:

我建议改为使用,因为它更好地集成到绑定系统中。@H.B.您认为更好地集成到绑定系统是什么意思?@DanEsparza:请看,您只能将其用于XmlDocument系列。@H.B.啊-我知道这个问题是针对WPF的。这更有道理。谢谢太棒了-你怎么知道这些事情!如果没有你的帮助,我不知道我怎么会知道。效果很好。非常感谢。