c# - 在 MVVM 应用程序中使用 RSS 提要加载 Xdocument

标签 c# wpf mvvm linq-to-xml

我正在通过转换一个简单的 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/

相关文章:

c# - 什么是快速测试多个盒子 ping 的最佳方法

c# - 如何使用 WMI/ADSI 和 C# 在 IIS 中为身份验证的扩展保护启用/禁用/获取状态?

c# - 焦点标签显示虚线作为边框

从空闲状态返回时,WPF应用程序变慢

c# - 单个 ViewModel 的多个 View

java - Dagger 2 : Injected object might still be null before onAttach is called in fragment

WPF 主窗口控件绑定(bind)属性从另一个窗口更改

c# - 为什么需要为部分 View 提供完整路径

c# - 如何通过 UserControl 参数管理控件的宽度?

c# - 无法从 'System.Linq.Expressions.Expression<System.Func<T, V?>>' 转换为 'System.Linq.Expressions.Expression<System.Func<T, decimal>>'