2008-11-02 10 views
6

나는 그것을 결코 해 본 적이 없으며 피드를 구독 한 적은 없지만 하나 만들어야 할 것 같아서 궁금합니다. 나에게 명백한 유일한 방법은 시스템이 새 항목 (블로그 게시물, 뉴스 항목 등)으로 업데이트 될 때 rss 파일에 새 요소를 작성해야한다는 것입니다. 또는 시스템에 대한 업데이트를 하루에 몇 번 확인하고 rss 파일에 기록하는 스크립트가 있습니다. 아마 그것을하는 더 좋은 방법이 있습니다.RSS 피드를 어떻게 생성합니까?

또한 기존 요소를 새로 추가 할 때 제거해야합니까?

편집 : 필자는 PHP로 작업하고 있는데, 특히 CodeIgniter를 mySQL 데이터베이스와 함께 사용하고 있습니다.

+0

CodeIgniter에 RSS가 지원되지 않습니까? – DisgruntledGoat

답변

3

나는 RSS 피드가 당신의 데이터에 대한 다른 견해 일 뿐이라고 말할 것입니다. 즉, RSS 피드는 단순히 데이터베이스에있는 데이터의 XML 표현입니다. 그러면 독자는 해당 URL을 클릭하고 애플리케이션의 현재 정보를 얻을 수 있습니다.

3

RSS 피드는 특정 스키마를 준수하는 XML 문서입니다.

는 모습 here

당신이 어떤 언어를 노력하고 있나요? 응용 프로그램의 일부 내용을 기반으로 XML 출력을 쉽게 스크립팅 할 수 있습니다. 파일을 파일 시스템에 명시 적으로 저장할 필요가 없습니다. 즉석에서 만들 수 있습니다.

+0

나는 PHP로 일하고있다. – thesmallprint

0

다음은 localhost 개발 사이트의 라이브 북마크로 사용하는 간단한 ASP.NET 2 기반 RSS 피드입니다.

<%@ Page Language="C#" EnableViewState="false" %> 
<%@ OutputCache Duration="300" VaryByParam="none" %> 

<%@ Import Namespace="System" %> 
<%@ Import Namespace="System.Configuration" %> 
<%@ Import Namespace="System.Web" %> 
<%@ Import Namespace="System.Web.Security" %> 
<%@ Import Namespace="System.Data" %> 
<%@ Import Namespace="System.Xml" %> 
<%@ Import Namespace="System.Text" %> 
<%@ Import Namespace="System.DirectoryServices" %> 

<script runat="server"> 

protected void Page_Load(object sender, EventArgs e) 
{ 
    System.Collections.Specialized.StringCollection HideSites = new StringCollection(); 
    System.Collections.Generic.List<string> Sites = new System.Collections.Generic.List<string>(); 

    HideSites.Add(@"IISHelp"); 
    HideSites.Add(@"MSMQ"); 
    HideSites.Add(@"Printers"); 

    DirectoryEntry entry = new DirectoryEntry("IIS://LocalHost/W3SVC/1/ROOT"); 
    foreach (DirectoryEntry site in entry.Children) 
    { 
     if (site.SchemaClassName == "IIsWebVirtualDir" && !HideSites.Contains(site.Name)) 
     { 
      Sites.Add(site.Name); 
     } 
    } 

    Sites.Sort(); 

    Response.Clear(); 
    Response.ContentType = "text/xml"; 
    XmlTextWriter RSS = new XmlTextWriter(Response.OutputStream, Encoding.UTF8); 
    RSS.WriteStartDocument(); 
    RSS.WriteStartElement("rss"); 
    RSS.WriteAttributeString("version","2.0"); 
    RSS.WriteStartElement("channel"); 
    RSS.WriteElementString("title", "Localhost Websites"); 
    RSS.WriteElementString("link","http://localhost/sitelist.aspx"); 
    RSS.WriteElementString("description","localhost websites"); 

    foreach (string s in Sites) 
    { 
     RSS.WriteStartElement("item"); 
     RSS.WriteElementString("title", s); 
     RSS.WriteElementString("link", "http://localhost/" + s); 
     RSS.WriteEndElement(); 
    } 

    RSS.WriteEndElement(); 
    RSS.WriteEndElement(); 
    RSS.WriteEndDocument(); 
    RSS.Flush(); 
    RSS.Close(); 
    Response.End(); 
} 

</script> 
+0

다른 게시물은 RSS가 단지 XML의 맛이라고 지적 했으므로 여전히 PHP에서 상당히 유사합니다. 콘텐츠 유형이 'text/xml'로 설정되어 브라우저/rss 피드 리더가 무엇을 얻고 있는지 알 수 있습니다. – Nick

0

RSS 피드는 특정 방식으로 형식이 지정되고 웹 페이지에서 링크 된 XML 문서 일뿐입니다.

RSS 사양을 자세히 설명하는이 페이지 (http://cyber.law.harvard.edu/rss/rss.html)를보고 RSS 파일 예제를 살펴보고 사이트에서 사용자에게 링크하는 방법을 보여줍니다.

문서 작성 방법은 귀하에게 달려 있습니다. 텍스트 편집기에서 수동으로 작성하거나 특정 언어의 XML 객체를 사용하거나 ASPX/PHP/다른 페이지를 클릭하고 RSS 문서와 함께 올바른 내용 유형 헤더를 보낼 수 있습니다.

당신이 그것에 내려 앉는 것은 그리 어려운 일이 아닙니다. 행운을 빕니다!

2

Magpie RSS에서 좋은 결과를 얻었습니다. 포함 된 캐싱을 설정하면 데이터를 검색하기위한 쿼리를 작성하고 그 결과를 Magpie RSS로 보내면 Magpie RSS가 업데이트 빈도를 처리합니다.

서버에 특히 부하가 심하지 않는 한 RSS 파일을 작성하지 않을 것입니다. 업데이트 된 내용을 보려면 하나의 쿼리 (또는 배열에 추가하는 일련의 쿼리)가 모두 필요합니다. 쿼리를 날짜순으로 정렬 한 다음 X로 제한하도록 작성하면 '오래된 항목 제거'에 대해 걱정할 필요가 없습니다.

0

이 접근 방법에는 두 가지가 있습니다. 첫 번째는 요청시 동적으로 RSS 문서를 만드는 것입니다. 두 번째는 관련 변경이 발생할 때 정적 파일에 기록하는 것입니다. 후자는 더 빠르지 만 피드를 여러 장소 (대개)에서 업데이트하는 호출이 필요합니다.

두 가지 방법 모두 변경 사항만으로 문서를 편집 할 수 있지만 매번 전체 문서를 가장 최근의 (10-50) 항목으로 다시 작성하는 것이 훨씬 간단합니다. 내가 사용하는 PHP를 들어

6

feedcreator http://feedcreator.org/

<?php define ('CONFIG_SYSTEM_URL','http://www.domain.tld/'); 

require_once('feedcreator/feedcreator.class.php'); 

$feedformat='RSS2.0'; 

header('Content-type: application/xml'); 

$rss = new UniversalFeedCreator(); 
$rss->useCached(); 
$rss->title = "Item List"; 
$rss->cssStyleSheet=''; 
$rss->description = 'this feed'; 
$rss->link = CONFIG_SYSTEM_URL; 
$rss->syndicationURL = CONFIG_SYSTEM_URL.'feed.php'; 


$articles=new itemList(); // list of stuff 
foreach ($articles as $i) { 
    $item = new FeedItem(); 
    $item->title = sprintf('%s',$i->title); 
    $item->link = CONFIG_SYSTEM_URL.'item.php?id='.$i->dbId; 
    $item->description = $i->Subject; 
    $item->date = $i->ModifyDate; 
    $item->source = CONFIG_SYSTEM_URL; 
    $item->author = $i->User; 
    $rss->addItem($item); 
} 

print $rss->createFeed($feedformat); 
+1

어, PHP4 및 데모에는 등록 글로벌이 필요합니다. – Znarkus

0

이미 HTML에 존재하는 요소의 피드를 생성 할 경우, 하나의 옵션은 hAtom (http://microformats.org/wiki/hAtom) 다음 포인트를 사용하도록 HTML 마크 업을 수정하는 것입니다 hAtom-> Atom 또는 hAtom-> RSS 프록시를 통해 독자에게 피드를 보내십시오.

관련 문제