旗下导航:搜·么
当前位置:网站首页 > XML教程 > 正文

手动生成批评RSS的代码实例【XML教程】,RSS,生成评论

作者:搜教程发布时间:2019-11-27分类:XML教程浏览:41评论:0


导读:近来博客园议论氛围热闹,有价值的批评也屡见不鲜。有时刻我们会很愿望定阅某篇文章的批评RSS,只惋惜博客园现在没有这个功用。关于注册用户来讲,我们能够经由过程点击批评框下方的“定阅复...
近来博客园议论氛围热闹,有价值的批评也屡见不鲜。有时刻我们会很愿望定阅某篇文章的批评RSS,只惋惜博客园现在没有这个功用。关于注册用户来讲,我们能够经由过程点击批评框下方的“定阅复兴”链接,如许就会在涌现新批评的时刻收到邮件。惋惜匿名用户,只得不停革新才关注近来议论到什么处所了。不过我们是什么人?我们是顺序员,这点停滞对我们来讲应该是在简朴不过的小事了。本身搭一个站点,猎取页面数据,剖析HTML,输出为RSS,就这么简朴。

老赵为此作了一个最最简朴的示例,能够定阅http://jeffreyzhao.cnblogs.com上恣意一篇文章的批评。由于只是简朴的个人东西顺序,所以完整不斟酌机能、伸缩性、扩展性,容错性,也扬弃任何的单元测试,依靠注入等“最好实践”。总之一句话,怎样轻易怎样来。

这个示例由两部份构成,第一部份是个静态HTML页面,依据文章URL生成并转向至其RSS链接。寥寥数行HTML和JavaScript:

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>博客园RSS</title>
    <script language="javascript" type="text/javascript">
        function goToCommentRss(url) {
            window.location = "CommentRss.ashx?url=" + encodeURIComponent(url);
        }    </script>
</head>
<body>
    <textarea id="url" cols="50" rows="10"></textarea><br />
    <input type="button" value="Comment RSS"        onclick="goToCommentRss(document.getElementById('url').value)" />
</body>
</html>

CommentRss.ashx将为我们输出批评的RSS。它的代码以下:

public class CommentRss : IHttpHandler{    public void ProcessRequest(HttpContext context)
    {        string url = context.Request.QueryString["url"];        WebClient webClient = new WebClient();
        webClient.Encoding = Encoding.UTF8;        string html = webClient.DownloadString(url);

        context.Response.ContentType = "text/xml";
        context.Response.ContentEncoding = Encoding.UTF8;        SyndicationFeed feed = GetRssFeed(url, html);        Rss20FeedFormatter rssFormatter = new Rss20FeedFormatter(feed);        XmlWriter rssWriter = XmlWriter.Create(context.Response.Output);
        rssFormatter.WriteTo(rssWriter);
        rssWriter.Close();
    }    private static SyndicationFeed GetRssFeed(string url, string html)
    {
        ...
    }    public bool IsReusable { get { return false; } }
}

实在.NET框架已为我们预备了太多太多有效的东西,我们只需要将它们拼接起来即可。比方有了WebClient类,三行代码便可下载到页面的HTML。然后我们经由过程GetRssFeed方法来取得一个SyndicationFeed对象,再经由过程Rss20FeedFormatter输出。SyndicationFeed和Rss20FeedFormatter都是.NET 3.5中自带的类库,放在System.ServiceModel.dll顺序集合的System.ServiceModel.Syndication定名空间里,能够轻易读取或生成Atom 1.0或RSS 2.0花样的XML为我们所用。更多信息能够参考InfoQ中文站的这篇报导:WCF的Web编程模子资本。

GetRssReed的关键在于剖析HTML字符串,老赵在这里运用了正则表达式匹配出每条批评的题目、URL、时候、用户和内容。然后构造出一个SyndicationFeed对象就再简朴不过了。惋惜的是,博客园差别模板的HTML差别,因而老赵的这个示例只支撑现在用的这个模板。您能够本身革新,比方为CommentRss.ashx增添一个新的参数,用于指名HTML的剖析体式格局,便能够用于多个模板了。

这个示例运用起来也异常简朴,您能够将其编译或布置在当地的IIS上,翻开Default.html页面,将文章的URL复制进去,如《老赵谈IL(2)》一文的URL:

点击按钮,便会链接至RSS页。因而在IE中便会展现为:

此时您只要把URL放入当地的RSS阅读器即可。由于顺序布置在您的机械上,因而您没法运用Google Reader等东西举行定阅。如果您有条件的话,把它们放到虚拟空间等处所即可。由于您的顺序只为您一个人效劳,因而不会占用大批资本,现在的写法也足够了。

我们是顺序员。本身着手,饱食暖衣。

【相干引荐】

1. RSS高效入门教程

以上就是手动生成批评RSS的代码实例的细致内容,更多请关注ki4网别的相干文章!

标签:RSS生成评论


欢迎 发表评论: