ホームページ  >  記事  >  バックエンド開発  >  コメント RSS を手動で生成するコード例

コメント RSS を手動で生成するコード例

Y2J
Y2Jオリジナル
2017-05-05 09:21:521866ブラウズ

最近、ブログパーク内のディスカッションの雰囲気が活発になり、貴重なコメントが続々と出ています。特定の記事の RSS コメントを購読したい場合がありますが、残念ながら現在ブログパークにはその機能がありません。登録ユーザーの場合は、コメント ボックスの下にある [返信を購読] リンクをクリックすると、新しいコメントが表示されたときにメールを受け取ることができます。匿名ユーザーが最近議論された内容に注意を払うために常に更新しなければならないのは残念です。しかし、私たちは何者なのでしょうか?私たちはプログラマーなので、この障害は私たちにとって些細な問題であるはずです。自分のサイトを構築し、ページデータを取得し、HTMLを解析してRSSとして出力するだけで、とても簡単です。

Lao Zhao はこれについて最も簡単な例を挙げました。http://jeffreyzhao.cnblogs.com のどの記事でもコメントを購読できます。これは単なる個人用ツール プログラムであるため、パフォーマンス、拡張性、スケーラビリティ、耐障害性は考慮されておらず、単体テスト依存性注入などの「ベスト プラクティス」はすべて破棄されています。一言で言えば、それはとても簡単です。

この例は、グループ化された 2 つの部分で構成されています。最初の部分は、記事 URL に基づいて生成 され、その RSS リンクに転送される 静的HTML ページです。たった数行の 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(&#39;url&#39;).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; } }
}

実際、.NETFramework には便利なツールが多すぎるので、それらをつなぎ合わせるだけで済みます。たとえば、WebClient クラスを使用すると、3 行のコードでページの 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文字列を分析することです。ここで、Zhao は正規表現を使用して、各コメントのタイトル、URL、時刻、ユーザー、内容を照合しました。そうすれば、SyndicationFeed オブジェクトの構築はこれ以上に簡単になります。残念ながら、Blog Park 内のさまざまなテンプレートの HTML は異なるため、Lao Zhao のこの例では現在のテンプレートのみがサポートされています。これを自分で変更することもできます。たとえば、CommentRss.ashx に新しいパラメーターを追加して HTML 解析方法を指定すると、複数のテンプレートで使用できるようになります。

この例も非常に簡単に使用できます。ローカル IIS にコンパイルまたは展開し、Default.html ページを開いて、記事の URL (「Old Zhao Talks」など) をコピーします。 ILについて(2)」:

コメント RSS を手動で生成するコード例

ボタンをクリックするとRSSページにリンクします。したがって、IE では次のように表示されます:

コメント RSS を手動で生成するコード例

現時点では、URL をローカルの RSS リーダーに入力するだけです。プログラムはマシンに展開されるため、Google Reader などのツールを使用して購読することはできません。条件が整えば仮想空間などに置くだけです。あなたのプログラムはあなたに役立つだけなので、多くのリソースを消費せず、現在の書き方で十分です。

私たちはプログラマーです。誰の助けも借りずに快適に暮らすこと。

【関連おすすめ】

1. RSS の効率的な入門チュートリアル

以上がコメント RSS を手動で生成するコード例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。