본문 바로가기
IT/Java & Kotlin

JDOM XML Parsing - JAVA

by 큰공 2021. 7. 19.
728x90
반응형

 

개요

 Java에서 rss 를 파싱을 하고 싶다면!!?

 목적은 해당 블로그의 RSS를 이용하여, 최신 게시물의 주소를 동적으로 얻어 오기 위함입니다.

 이전 게시물 중 파이썬을 이용해서 RSS 클리핑 하는 게시물을 작성했는데, JAVA 코드에서 해당 부분을 구현하는 것을 설명하기 위해서 아래 게시물을 작성합니다.

https://coinpipe.tistory.com/100?category=828514 

 

티스토리 RSS 클리핑 하기

개요  파이썬을 이용하여, RSS 피드를 가지고 오는 것을 해보기로 한다.  티스토리 블로그는 RSS 형식을 지원한다. RSS는 여러가지로 사용이 되는데, 해당 블로그의 주소 타이틀 등을 얻어 올 수

coinpipe.tistory.com

 

JDOM

 rss 문서는 기본적으로 xml 문법으로 작성되어있습니다. 즉, xml 문서를 파싱하는 것이 필요하며, java에서 주로 쓰이는 JDOM 이라는 라이브러리를 소개드립니다.

 

 아래 다운로드 링크에서, jdom-2.0.6.jar 를 다운로드 받습니다.

http://www.jdom.org/downloads/index.html

 

JDOM: Binaries

Release Builds These are the stable, publicly released JDOM builds. Rigorous testing goes into a release build, ensuring you can run it in your production applications without fear of major bugs or trouble.

www.jdom.org

 

라이브러리 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 라이브러리를 사용하자

 

 

728x90
반응형

댓글