개요
Java에서 rss 를 파싱을 하고 싶다면!!?
목적은 해당 블로그의 RSS를 이용하여, 최신 게시물의 주소를 동적으로 얻어 오기 위함입니다.
이전 게시물 중 파이썬을 이용해서 RSS 클리핑 하는 게시물을 작성했는데, JAVA 코드에서 해당 부분을 구현하는 것을 설명하기 위해서 아래 게시물을 작성합니다.
https://coinpipe.tistory.com/100?category=828514
JDOM
rss 문서는 기본적으로 xml 문법으로 작성되어있습니다. 즉, xml 문서를 파싱하는 것이 필요하며, java에서 주로 쓰이는 JDOM 이라는 라이브러리를 소개드립니다.
아래 다운로드 링크에서, jdom-2.0.6.jar 를 다운로드 받습니다.
http://www.jdom.org/downloads/index.html
라이브러리 Linking 하기
필자는 이클립스 IDE를 이용하여, JAVA 코드를 릴리즈하고 관리하는데, 이클립스에서는 아래와 같이 JDOM 라이브러리를 추가 가능합니다.
프로젝트 선택 -> Properties -> JAVA BUILD PATH -> ADD External JARS 로 jar 파일로 된 라이브러리를 추가 가능합니다.
소스 코드
private String parser() {
String url = null;
SAXBuilder saxBuilder = new SAXBuilder();
try {
Document doc = saxBuilder.build("http://coinpipe.tistory.com/rss");
Element root = doc.getRootElement();
Element e_channel = root.getChild("channel");
List<Element> children = e_channel.getChildren("item");
Iterator<Element> iter = children.iterator();
for (int i = 0; i < 1; i++) {
if (!iter.hasNext())
break;
Element e = iter.next();
String link = e.getChildTextTrim("link");
System.out.println(link);
url = link;
}
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return url;
}
코드 설명
궁극적으로 이 게시물에서 하고자 하는것은, http://coinpipe.tistory.com/rss 를 읽어 들여서, 최신 게시물의 주소를 얻어오는 코드를 작성하는 것입니다.
RSS 구조를 보면 아래와 같습니다.
이 중 첫번째로 오면 item의 link 가 원하는 주소값이며, 이를 얻어오고자 합니다.
첫 번째로 root 에서 "channel" 이라는 자식 element 를 찾고, 다음 channel 에서 "item" 자식을 찾고, 다음 item 에서 "link" 라는 자식을 찾아서, 그 Link의 값을 구하면 됩니다.
root -> channel -> item -> link 순으로 그 값을 찾아가게 됩니다.
xml 파싱은 위와 같이 자식 노드를 한번에 찾을 수는 없으며, 순차적으로 찾아가면서 아래 Element 를 추출하는 방식으로 이뤄집니다.
맺으며
Console output 으로 RSS을 이용한 최신 게시물의 주소가 얻어 왔음을 볼 수 있다.
JAVA에서 XML 를 파싱하기 위해서는 JDOM 라이브러리를 사용하자
'IT > Java & Kotlin' 카테고리의 다른 글
코틀린 Property (속성) : 데이터 캡슐화의 간편한 방법 (3) | 2024.04.19 |
---|---|
Jetpack Compose에서 상태 관리하기: remember와 mutableStateOf (0) | 2024.04.17 |
[Kotlin] 1급 시민 함수(first-class citizen)란? (0) | 2024.04.03 |
jfxrt 활용하여, 웹페이지 불러오기 (4) | 2021.07.21 |
댓글