C# 如何在更新RSS提要时触发可执行文件
我有一个RSS提要URL,可以在任何提要阅读器中查看。C# 如何在更新RSS提要时触发可执行文件,c#,.net,rss,C#,.net,Rss,我有一个RSS提要URL,可以在任何提要阅读器中查看。 这个RSS源不是由我控制的,它只由我使用。 此RSS提要()链接到包含可下载文件的页面 这些文件大约每月更新一次,RSS提要将显示新的“未读项目” 我想做的是写一些东西(用C#)每周检查一次这个RSS提要,当一个新项目(即一个新的可下载文件)可用时,触发一个可执行文件 这本质上类似于缩小的RSS阅读器,其唯一目的是在出现新项目时触发可执行文件 如有任何指导、建议,将不胜感激 编辑: 我需要帮助来决定什么时候有新的工作 项目可用于 下载 跑
这个RSS源不是由我控制的,它只由我使用。
此RSS提要()链接到包含可下载文件的页面 这些文件大约每月更新一次,RSS提要将显示新的“未读项目” 我想做的是写一些东西(用C#)每周检查一次这个RSS提要,当一个新项目(即一个新的可下载文件)可用时,触发一个可执行文件 这本质上类似于缩小的RSS阅读器,其唯一目的是在出现新项目时触发可执行文件 如有任何指导、建议,将不胜感激 编辑:
- 我需要帮助来决定什么时候有新的工作 项目可用于 下载
- 跑步 我能行
- 将运行的可执行文件,将处理 下载的文件
正如一位评论者已经指出的,这个问题相当广泛,但这里有一个尝试来回答:
- 您可以编写一个Windows服务(使用VS/MonoDevelop附带的模板),也可以编写一个简单的控制台应用程序,由Windows调度器或Cron调用
- 主代码将使用许多可用的RSS提要解析器之一:
- 解析提要后,您需要查找
元素的值,可以通过上面的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
}
}