jsoup RSS XML 파싱
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());
}
String rss = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+"<rss><channel>"
+ "<title>The Blog Title</title>"
+ "<link>http://www.the.blog/category</link>"
+"</channel></rss>";
Document doc = Jsoup.parse(rss, "", Parser.xmlParser());
Element link = doc.select("rss channel link").first();
System.out.println(link.text()); // prints empty string