Development note/Java

[Java] Jsoup를 이용해서 XML파일(HTML)을 다루는 방법

v명월v 2019. 8. 7. 00:01

안녕하세요. 명월입니다.


이 글은 Java에서 Jsoup를 이용해서 XML파일(HTML)을 다루는 방법에 대한 글입니다.


Java에서 XML를 다루는 방법에 대해서는 XMLStream을 이용하는 방법과 XPath를 이용하는 방법 그리고 CSSSelector를 통해 데이터를 취득해 오는 방법이 있습니다.

CSSSelector로 가져오는 방법에 대해서는 Jquery에서 sizzle 엔증으로 DOM을 취득해 오는 방법과 비슷한 형식입니다.


먼저 Jsoup을 사용하기 위해서는 maven을 통해서 라이브러리를 다운 받아야 합니다.


Repository - https://mvnrepository.com/artifact/org.jsoup/jsoup/1.12.1

그리고 예제로는 제 티스토리 블로그의 rss로 확인하겠습니다.

링크 - https://nowonbun.tistory.com/rss


위 예제에서 저는 channel -> item -> title를 콘솔로 출력하겠습니다.

import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class Main {
  public static void main(String[] args) {
    try {
      // Jsoap 커넥션으로 접속한다. // 파일을 읽을 때는 Jsoup.parse함수를 사용하면 된다.
      Connection conn = Jsoup.connect("https://nowonbun.tistory.com/rss");
      // Document 클래스로 xml데이터를 취득
      Document doc = conn.get();
      // item 태그를 가져온다. (iteration 타입이다.)
      Elements eles = doc.select("item");

      for (Element ele : eles) {
        // item 태그의 title 태그를 취득한다.
        Elements subnode = ele.select("title");
        // text를 출력한다.
        System.out.println(subnode.text());
      }
    } catch (Throwable e) {
      e.printStackTrace();
    }
  }
}

rss 파일에서 item의 title만 출력이 되었습니다. 사실 이 Jsoup 라이브러리는 Html parse 라이브러리입니다. 그러나 html은 곧 xml형식이기 때문에 xml도 파싱이 가능합니다.

XML의 경우는 Xpath를 통해 데이터를 취득하는 게 보통입니다만 Jsoup로도 데이터를 취득할 수 있습니다.


여기까지 C#에서 날짜 포맷에 대한 글이었습니다.


궁금한 점이나 잘못된 점이 있으면 댓글 부탁드립니다.