2017년 9월 5일 화요일

XML jsoup

JSoup은 간단히 외부 url에 접근해서, 문서를 가져올 수 있게끔 지원한다.
다음과 같은 코드를 이용해서 특정 url에 접근할 수 있다.
        Document doc = Jsoup.connect("http://openapi.naver.com/search")
                .data("key", API_KEY_NAVER_IMG_SEARCH)
                .data("query", URLEncoder.encode(keyword, "UTF-8"))
                .data("target""image").data("start""1")
                .data("diplay"String.valueOf(count)).userAgent("Mozila")
                .parser(Parser.xmlParser()).timeout(3000).get();

connect의 파라메터로, 접근할 URL을 작성하고 
data 메소드를 이용해서 HTTP 접근시 이용할 파라메터를 추가해줄 수 있다.
XML 파싱을 할때의 가장 주의할 점은, parser를 xml파서로 꼭 지정을 해주어야한다는 점이다.
parser 메소드의 명시적 선언없이, 그냥 사용을 하면, 문서구조는 잘 불러와지나, 
실제 필요한 데이터를 select하였을 시 빈 데이터값만 받아진다.
따라서, .parser를 xml파서로 등록을 해주고, 마지막에 HTTP METHOD에 맞는 함수를 호출하면 된다.
그 후 원하는 속성의 데이터를 불러오기 위해선, 
Elements라는 객체와, Element 객체를 이용해서 데이터를 불러오게 되는데,
다음의 코드를 이용해서 불러올 수 있다.
        Elements elements = doc.select("link");
        System.out.println("elements = " + elements);
        for (Element e : elements) {
            System.out.println(e.text());
        }
document 인스턴스에서, link라는 이름을 가진 노드를 가져와서 출력하는 코드이다.

select 메소드를 이용해서, 특정 문자열을 가진 노드를 가져올 수 있고,
노드 객체인 element의 text 메소드를 이용해서 실제 값을 받을 수 있다.

댓글 없음: