'xml' 의미를 부여한 태그 답게 그냥 적정한 태그에 적정한 값을 넣어 주면 끝처럼 보였습니다.
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>사이트 제목</title>
<link>사이트 주소</link>
<description>RSS 명</description>
<copyright>관리자 이메일</copyright>
<pubDate>날짜</pubDate>
<webMaster>웹마스터 이메일</webMaster>
<!-- 언어 -->
<language>ko</language>
<item>
<title>글 제목</title>
<link>http://글 링크</link>
<description>글 내용</description>
<category>카테고리</category>
<guid>유일한 글식별번호</guid>
<pubDate>날짜</pubDate>
</item>
<item>
...
</item>
...
</channel>
</rss>
대충 위에 내용 대로 넣어 xml파일을 뿌려주면 RSS 리더기가 필요한 태그를 쏙쏙 빼가서 유용하게
보여주는 구조입니다.
http://www.rssboard.org/rss-specification
위 링크로 가면 RSS 태그 규격을 볼 수 있습니다. 물론 영어 ㅎㅎ
간단 할 줄 알았는데 막상 구현 할려니 정해야 할게 몇게 있더군요,
우선 실제 xml파일을 생성해 RSS를 구현 할 것인지,
아니면 JavaScript나 다른 방법으로 가상의 xml파일을 만들어 보여주기만 할 것인지
후자 쪽은 잘 모르겠어서 전자 xml파일을 실제로 생성하고 사용자가 해당 파일로 접근해 RSS를
배포하는 식으로 만들어 봤습니다.
두 번째로 정해야 할 것은 게시판 글이나 기타 RSS로 배포해야 하는 컨텐츠가 등록 될 때마다 xml 파일을
업데이트 할 것인지 아니면 사용자가 xml을 호출 할때 마다 xml파일을 업데이트 할 것 인지입니다.
개인적으로 등록될 때마다 업데이트 하는게 맞다고 생각하지만 일단 호출 될 때 마다 xml파일을 업데이트
하게 만들었습니다. 특정 url 호출이 있으면 jdom을 이용해 xml 파일을 생성하게 했습니다.
위의 파일은 jdom 라이블러리 입니다.
public void createRss(String rssFile) {
Element root = new Element("rss");
Attribute version = new Attribute("version", "2.0");
// Attribute xmlns = new Attribute("xmlns:dc", "http://purl.org/dc/elements/1.1/");
root.setAttribute(version);
// root.setAttribute(xmlns);
Element channel = new Element("channel");
Element title = new Element("title");
title.setText("INTSYSTEM 소스관리 시스템 RSS");
Element link = new Element("link");
link.setText(http://naver.com);
Element description = new Element("description");
description.setText("소스 목록");
Element copyright = new Element("copyright");
copyright.setText("kjw2043@main.co.kr");
Element webMaster = new Element("webMaster");
webMaster.setText("kjw2043@main.co.kr");
Element language = new Element("language");
language.setText("ko");
Element item = new Element("item");
Element ititle = new Element("title");
ititle.setText("제목");
Element ilink = new Element("link");
ilink.setText("http://intsystem.co.kr");
Element idescription = new Element("description");
idescription.setText("내용");
Element category = new Element("category");
category.setText("카테고리");
Element guid = new Element("guid");
guid.setText("1");
Element pubDate = new Element("pubDate");
pubDate.setText("2010.06.11");
item.addContent(ititle);
item.addContent(ilink);
item.addContent(idescription);
item.addContent(category);
item.addContent(guid);
item.addContent(pubDate);
channel.addContent(item);
channel.addContent(title);
channel.addContent(link);
channel.addContent(description);
channel.addContent(copyright);
channel.addContent(webMaster);
channel.addContent(language);
root.setContent(channel);
Document doc = new Document();
doc.setRootElement(root);
XMLOutputter outputter = new XMLOutputter();
Format f = outputter.getFormat();
f.setEncoding("euc-kr");
f.setIndent(" ");
f.setLineSeparator("\r\n");
f.setTextMode(Format.TextMode.TRIM);
outputter.setFormat(f);
FileWriter writer;
try {
writer = new FileWriter(rssFile);
outputter.output(doc, writer);
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
위 소스가 간단한 RSS 생성 소스입니다.
RSS xml을 호출 받으면 public void createRss(String rssFile) 메소드를 호출하고 여기서 rssFile은
xml파일의 경로입니다.
여기서 중요한 점이 두군데 있는데
하나는 주석처리된 아래 부분입니다.
// Attribute xmlns = new Attribute("xmlns:dc", "http://purl.org/dc/elements/1.1/");
RSS 표준에는 rss루트 엘리먼트에 위의 속성이 들어가야 하지만 어째서인지 jdom에서는 위의 속성이
오류가 납니다. 해결법을 아시는 분은 알려 주세요.
두 번째는
Format f = outputter.getFormat();
f.setEncoding("euc-kr");
위의 format의 인코딩을 바꿔주는 부분입니다.
처음에는 위 처럼 인코딩을 바꿔주는 것을 몰라 계속 오류가 낳습니다.
RSS 내용에 한글이 포함되어 있다면 인코딩을 euc-kr로 바꿔주세요.
'Web Programing! > JAVA / JSP' 카테고리의 다른 글
[JSP] excel파일 읽어오기 (0) | 2011.09.19 |
---|---|
[JAVA] System.getProperty (0) | 2011.09.18 |
[JSP] response 객체에 HTML, javascript 코드 넣기 (0) | 2011.09.18 |
[JSP] javax.mail로 메일 전송시 한글 첨부파일명이 깨지는 경우 (0) | 2011.09.17 |
[JSP] jsp + 트위터 연동시 참고 사이트 (0) | 2011.09.17 |
[JSP] 포이<POI> 이용하여 엑셀 출력하기 (0) | 2011.09.14 |
[JSP] 파일 확장자 추출하기 (1) | 2011.09.14 |