블로그 이미지
기대주
초초초초보 개발자.. 프로그래머도 아니고..엔지니어도 아니고.. 은땡때문에살지요^^

calendar

1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

Notice

2007. 5. 23. 18:52 A&J프로젝트


Rss.java              = 엘리먼트와 애트리뷰트들 정의, 리스트 정의
Item.java              = item리스트에서 쓰일 엘리먼트 정의
RssTest.java        = 실제 파싱
rss.jsp                 = 파싱하여 페이지에 보여준다.


컨솔창이 아닌 페이지에서도 보이는 연습을 했다.

jsp파일을 뺀 자바파일로 돌리는 결과부터 보면,,,

사용자 삽입 이미지


jupid.xml은 나의 블로그에서 rss2.0으로 뽑은 것을 xml로 저장시켜둔 것이다.

큰 엘리먼트들은 Rss.java에서 정의하고 리스트로 뽑아올 것들은 Item.java로 정의하였다.

RssTest.java

에서는 RssTest 객체를 만들고

digester를 만들엇다.

dig.setRules(new ExtendedBaseRules());       왜 있는지 모르겠다 빼도 상관없다.

rss/channel 경로로 클래스를 만들고 빈들을 만들어 저장한다.

마찬가지로 rss/channel/item 경로로 클래스 생성후 빈 저장

단, item은 반복되기때문에 dig.addSetNext("rss/channel/item","addItem"); 한줄 추가
1-1에서 적었듯이 for문 같다..반복할때 쓰인다.

1-1은 파일을 읽었다. 1-2는 rss url을 받아서 해당사이트를 읽어온다.

Rss rss = null;
   try{
    URL url = new URL(rssUrl);
    rss = (Rss) dig.parse(url);
   }catch(Exception e){
    e.printStackTrace();
   }
   
   return rss;

이부분으로 인해 url을 파싱한다. 1-1은 (url)부분이 (file)이었다.

jsp에서는 rss객체와 itme객체를 뽑아서 테이블에 등록한다.
사용자 삽입 이미지


rss.jsp

<%
 Rss rss = RssTest.getRss("http://jupid.tistory.com/rss");
 List itemList = rss.getItems();
%>

<html>
<title><%=rss.getTitle()%></title>                     //제목을 찍는다.제목은 rss객체에 있는 타이틀이다.

<body>
<table border=1>
 <tr>
  <td>순위</td>                                             //여기의 제목은 item의 title이다.
  <td>제목</td>
  <td>작성자</td>
  <td>작성시간</td>
 </tr>
<% int i = 1;
 if(itemList != null){                                           //itemList가 널이 아니라면 itemList의 뿌려진 수만큼                                                                      반복해서 목록을 가져온다.
  for(Iterator iter = itemList.iterator();iter.hasNext();i++){
   Item item = (Item)iter.next();
%>
 <tr>
  <td align=center><%=i%></td>
  <td><a href = '<%=item.getLink()%>'><%=item.getTitle() %></a></td>
  <td><%=item.getAuthor() %></td>
  <td><%=item.getPubDate() %></td>
 </tr>
<%  }
 }
%>
</table>

posted by 기대주