저작권 안내: 저작권자표시 Yes 상업적이용 No 컨텐츠변경 No

스프링5 입문

JSP 2.3

JPA 입문

DDD Start

인프런 객체 지향 입문 강의

'ROME'에 해당되는 글 1건

  1. 2008.12.23 ROME를 이용한 RSS/Atom 피드 읽어오기 (1)

최근 자바캔의 컨텐츠를 티스토리로 옮기는 준비를 할 때, 컨텐츠를 옮기는 대신 티스토리 블로그의 RSS 피드를 읽어와 자바캔 메인 화면에 보여줌으로써 컨텐츠를 쉽게 접근할 수 있게 하자는 계획을 세웠다. RSS 피드를 읽어와 사용하기 쉬운 형태로 변경해주는 라이브러리를 찾다가 'ROME'라는 오픈 소스 솔루션을 발견하게 되었다. RSS와 Atom의 다양한 버전을 지원할 뿐만 아니라 사용법도 매우 간단해서 간단하게 원하는 기능을 구현할 수 있었다.

먼저 ROME(RSS and atOM utilitiEs for Java)는 https://rome.dev.java.net/ 사이트에서 다운로드 받을 수 있다. 아직 정식 1.0 버전이 출시된 건 아니면, 이 글을 쓰는 시점에서 현재 버전은 1.0-RC1이다. rome-1.0RC1.zip 파일을 다운로드 받은 뒤 압축을 풀면 rome-1.0RC1.jar 파일이 생성되는 데 이 파일을 클래스패스에 추가해주면 된다. 또한, JDOM 1.0 버전을 사용하고 있기 때문에 JDOM 관련 라이브러리도 추가적으로 등록해 주어야 한다.

ROME를 이용한 피드 읽기

ROME가 제공하는 API를 이용해서 피드를 읽어오는 코드는 아래와 같다.

String rssUrl = "http://javacan.tistory.com/rss";
URL feedUrl = new URL(rssUrl);
try {
    SyndFeedInput input = new SyndFeedInput();
    SyndFeed feed = input.build(new XmlReader(feedUrl));

    System.out.println("RSS title: " + feed.getTitle());
    System.out.println("RSS author: " + feed.getAuthor());

    List entries = feed.getEntries();
    for (int i = 0; i < entries.size(); i++) {
        SyndEntry entry = (SyndEntry) entries.get(i);
        System.out.println("--- Entry " + i);
        System.out.println(entry.getTitle());
        System.out.println(entry.getAuthor());
        System.out.println(entry.getDescription().getValue());
        System.out.println(entry.getLink());
    }
} catch (IllegalArgumentException e) {
    // ...
} catch (FeedException e) {
    // ...
} catch (IOException e) {
    // ...
}

SyndFeedInput은 RSS 피드로부터 XML 데이터를 읽어와 피드 내용을 추상화한 SyndFeed 인스턴스를 리턴한다. SyndFeed는 내부적으로 개별 로그 정보를 담고 있는 SyndEntry 목록을 저장하고 있어서, 개별 로그의 제목이나 내용에 접근할 수 있다. 이 두 클래스가 제공하는 정보는 API 문서(https://rome.dev.java.net/apidocs/1_0/overview-summary.html)를 참고하기 바란다.

ROME가 지원하는 피드 버전

  • RSS 0.90, RSS 0.91 Netscape, RSS 0.91 Userland
  • RSS 0.92, RSS 0.93, RSS 0.94
  • RSS 1.0
  • RSS 2.0
  • Atom 0.3
  • Atom 1.0


관련 링크:

 

Posted by 최범균 madvirus

댓글을 달아 주세요

  1. soulfree 2009.02.23 02:38 신고  댓글주소  수정/삭제  댓글쓰기

    비슷한 기술이 많이 연구되는지 찾다가 오게되었습니다.
    졸업논문 관련으로 소개해주신 라이브러리를 쓸거같아서 제 블로그에 링크해두었는데 혹시 실례가 되는게 아닌지 모르겠네요^^;;