在 MVVM 应用程序中使用 RSS feed 加载 Xdocument

发布于 2024-12-28 14:45:16 字数 825 浏览 0 评论 0原文

我正在学习 MVVM &通过转换简单的 wpf RSS 应用程序来实现 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();
    }

谢谢

I am learning MVVM & Linq to xml by converting a simple wpf RSS app. Originally, I used XmlDataProvider to load local xml files or RSS urls. I am now using the code below which works fine loading local xml files, but throws the "FileNotFoundException" when its a url. During debugging I see the correct url address in (string RSS_URL), yet the file is not found. My initial searching led me to Webclient & HttpWebRequest, but I haven't had any success with them. Am I on the right track? Any code or tutorial links available?

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();
    }

Thank You

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

○愚か者の日 2025-01-04 14:45:17

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

快速提供一些附加信息:Load() 方法依赖于基础 XmlReader 和对 Create() 的调用。如果资源(本例中为 URL)不存在,则会抛出 WebException,指示资源不存在。

XDocument.加载信息:
http://msdn.microsoft.com/en-us/library/bb343181.aspx

XmlReader.创建信息:
http://msdn.microsoft.com/en-us/library/w8k674bf.aspx

XDocument.Load() will accept URLs without any problem. The issue in your code is that you're using File.Exists() to determine whether or not he URL is valid. File.Exists() only accepts a filesystem path, not a uri.

Quick piece of additional info: the Load() method relies on an underlying XmlReader and a call to Create(). If the resource (the URL in this case) doesn't exist, a WebException will be thrown indicating that the resource doesn't exist.

XDocument.Load info:
http://msdn.microsoft.com/en-us/library/bb343181.aspx

XmlReader.Create info:
http://msdn.microsoft.com/en-us/library/w8k674bf.aspx

回眸一遍 2025-01-04 14:45:17

您使用的 XDocument.Load 重载专门用于从文件加载。您必须从 RSS 源下载才能在本地获取 XML 数据。查看此处的 MSDN 文档替代方案例如从流中读取,这可能更适合您的需要。

The XDocument.Load overload you are using is specifically for loading from a file. You would have to download from the RSS feed to get the XML data locally. Look at the MSDN document here for alternatives such as reading from a stream, which might be better suited to what you need.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文