>  기사  >  백엔드 개발  >  댓글 RSS를 수동으로 생성하는 코드 예

댓글 RSS를 수동으로 생성하는 코드 예

Y2J
Y2J원래의
2017-05-05 09:21:521887검색

최근 블로그에서 토론이 활발해지며 귀중한 댓글이 속속 등장했습니다. 때때로 우리는 특정 기사의 RSS 댓글을 구독하고 싶지만 불행하게도 블로그 파크에는 현재 이 기능이 없습니다. 등록된 사용자의 경우 댓글 상자 아래에 있는 "답장 구독" 링크를 클릭하면 새 댓글이 나타날 때 이메일을 받을 수 있습니다. 익명의 사용자가 최근 논의된 내용에 주의를 기울이기 위해 지속적으로 새로 고쳐야 하는 것은 안타까운 일입니다. 그런데 우리는 누구입니까? 우리는 프로그래머이기 때문에 이 장애물은 우리에게 있어서 사소한 문제에 지나지 않습니다. 자신만의 사이트를 구축하고, 페이지 데이터를 얻고, HTML을 분석하고, RSS로 출력하는 것은 너무나 간단합니다.

Lao Zhao는 이에 대한 가장 간단한 예를 제시했습니다. http://jeffreyzhao.cnblogs.com에서 모든 기사의 댓글을 구독할 수 있습니다. 단순한 개인 도구 프로그램이기 때문에 성능, 확장성, 확장성, 내결함성을 고려하지 않고 단위 테스트, 종속성 주입 등과 같은 "모범 사례"를 모두 폐기합니다. . 한마디로, 그것은 가능한 한 쉽게 다가온다.

이 예는 두 개의 그룹으로 구성됩니다. 첫 번째 부분은 기사 URL을 기반으로 을 생성하고 다음으로 전달하는 정적HTML 페이지입니다. 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(&#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; } }
}

사실 .NET Framework에는 유용한 도구가 너무 많이 준비되어 있으므로 이들을 연결하기만 하면 됩니다. 예를 들어 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의 웹프로그래밍모델리소스에서 이 보고서를 참조하세요.

GetRssReed의 핵심은 HTML

문자열 을 분석하는 것입니다. 여기서 Zhao는 정규식 을 사용하여 제목, URL, 시간, 사용자 및 콘텐츠를 일치시켰습니다. 그렇다면 SyndicationFeed 개체를 구성하는 것이 이보다 더 간단할 수는 없습니다. 안타깝게도 블로그 파크에 있는 다양한 템플릿의 HTML이 다르기 때문에 이 Lao Zhao의 예는 현재 템플릿만 지원합니다. 예를 들어 HTML 구문 분석 방법을 지정하기 위해 CommentRss.ashx에 새 매개변수를 추가하는 등 직접 수정할 수 있으며, 그런 다음 여러 템플릿에서 사용할 수 있습니다.

이 예제는 사용하기도 매우 간단합니다. 로컬 IIS에서 컴파일하거나 배포하고 Default.html 페이지를 열고 "Old Zhao Talks about IL(2)"와 같은 기사의 URL을 복사할 수 있습니다. )" 기사 URL:

댓글 RSS를 수동으로 생성하는 코드 예

버튼을 클릭하면 RSS 페이지로 연결됩니다. 따라서 IE에는 다음과 같이 표시됩니다.

댓글 RSS를 수동으로 생성하는 코드 예

이때 로컬 RSS 리더에 URL만 입력하면 됩니다. 프로그램이 귀하의 컴퓨터에 배포되기 때문에 Google 리더와 같은 도구를 사용하여 구독할 수 없습니다. 조건이 있으면 가상공간이나 다른 장소에 넣어두시면 됩니다. 귀하의 프로그램은 귀하에게만 서비스를 제공하기 때문에 많은 리소스를 차지하지 않으며 현재 작성 방식으로 충분합니다.

우리는 프로그래머입니다. 스스로 하시고 음식과 의복을 충분히 갖추십시오.

[관련 추천]

1.

RSS 효율적 입문 튜토리얼

위 내용은 댓글 RSS를 수동으로 생성하는 코드 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.