Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在更新RSS提要时触发可执行文件_C#_.net_Rss - Fatal编程技术网

C# 如何在更新RSS提要时触发可执行文件

C# 如何在更新RSS提要时触发可执行文件,c#,.net,rss,C#,.net,Rss,我有一个RSS提要URL,可以在任何提要阅读器中查看。 这个RSS源不是由我控制的,它只由我使用。 此RSS提要()链接到包含可下载文件的页面 这些文件大约每月更新一次,RSS提要将显示新的“未读项目” 我想做的是写一些东西(用C#)每周检查一次这个RSS提要,当一个新项目(即一个新的可下载文件)可用时,触发一个可执行文件 这本质上类似于缩小的RSS阅读器,其唯一目的是在出现新项目时触发可执行文件 如有任何指导、建议,将不胜感激 编辑: 我需要帮助来决定什么时候有新的工作 项目可用于 下载 跑

我有一个RSS提要URL,可以在任何提要阅读器中查看。
这个RSS源不是由我控制的,它只由我使用。
此RSS提要()链接到包含可下载文件的页面

这些文件大约每月更新一次,RSS提要将显示新的“未读项目”

我想做的是写一些东西(用C#)每周检查一次这个RSS提要,当一个新项目(即一个新的可下载文件)可用时,触发一个可执行文件

这本质上类似于缩小的RSS阅读器,其唯一目的是在出现新项目时触发可执行文件

如有任何指导、建议,将不胜感激

编辑:

  • 我需要帮助来决定什么时候有新的工作 项目可用于 下载
  • 跑步 我能行
  • 将运行的可执行文件,将处理 下载的文件

您可以编写一个系统托盘应用程序。我已经按计划完成了几个屏幕清理/监视站点。这是一个非常简单的开始。我想你可以在几个小时内完成你想要的


正如一位评论者已经指出的,这个问题相当广泛,但这里有一个尝试来回答:

  • 您可以编写一个Windows服务(使用VS/MonoDevelop附带的模板),也可以编写一个简单的控制台应用程序,由Windows调度器或Cron调用

  • 主代码将使用许多可用的RSS提要解析器之一:

这里有很多这样的例子。依我看,最简单的基于LINQ的是

我个人喜欢,也使用LINQ

  • 解析提要后,您需要查找
    链接
    元素的值,可以通过上面的SO示例找到该值:

  • 因此,现在您已经有了可执行文件,您需要将其下载到您的机器上。我建议你研究一下:
  • 现在,您已经下载了文件,只需使用
    Process.Start(“Path to EXE”)来执行它

小心前女友身上的病毒

因此您必须从URL读取RSS提要,然后解析数据以确定是否有新项目可用

要阅读提要,您需要使用。最简单的方法是:

var MyClient = new WebClient();
string rssData = MyClient.DownloadString("http://whatever");
然后可以从返回的字符串创建XML文档

var feedXML = new XMlDocument();
feedXML.Load(rssData);
@dawebber展示了如何使用LINQ解析XML。您需要检查每个项目的日期,以查看它是否比上次检查的日期更新。或者您有一个数据库,其中包含您已经看到的项目,您希望检查您收到的项目是否在数据库中


无论何时发现新项,都可以使用启动可执行文件。

如果使用.Net 3.5或更高版本,则可以使用命名空间中的各种类,特别是公开LastUpdateTime属性的类,您可以使用该属性比较日期,以了解何时使用System.Diagnostics命名空间中的方法调用可执行文件

            using (XmlReader reader = XmlReader.Create(path))
            {
                SyndicationFeed feed = SyndicationFeed.Load(reader);

                if ((feed != null) && (feed.LastUpdateTime > feedLastUpdated))
                {
                    // Launch Process                            
                }
            }

你在哪一部分有问题?您是否需要帮助确定是否有新项目,或者您是否需要知道在确定有新项目后如何启动可执行文件?我认为他将运行系统中已经存在的特定可执行文件,从新项目向其传递信息。我很确定他没有运行下载的可执行文件。我也尝试过,但结果是我试图读取的提要没有提供任何LastUpdateTime。有没有可能他们没有提供他们的饲料领域?我从该字段中得到了一个空类型的日期值(类似于“01/01/0001”)。
            using (XmlReader reader = XmlReader.Create(path))
            {
                SyndicationFeed feed = SyndicationFeed.Load(reader);

                if ((feed != null) && (feed.LastUpdateTime > feedLastUpdated))
                {
                    // Launch Process                            
                }
            }