문화재단에서 제공하는 데이터 값을 뽑아오면
<rdnmadr>충청북도 증평군 증평읍 둔덕길 89</rdnmadr><lnmadr>충청북도 증평군 증평읍 남하리 91</lnmadr><latitude>36.763944</latitude><hardness>127.595498</hardness>
이런식으로 값을 반환받을 수 있는데 모든 데이터를 뽑아올 시 같은양식으로
다른데이터가 들어간 긴 값을 반환 받게됩니다
이러한 경우 위도,경도,공연 이름 특정한 값만 뽑아오려면 어떻게 해야할까요
특정 데이터 값을 뽑아오는 코드를 작성해보았지만 첫 데이터만 뽑아오고 실행이 안되는데 감이 잘 안오네요..
String latString = "<latitude>";
int latStringNum;
String lngString = "<hardness>";
int lngStringNum;
StringBuilder urlBuilder = new StringBuilder("http://api.data.go.kr/openapi/museum-artgr-info-std"); /*URL*/
urlBuilder.append("?" + URLEncoder.encode("ServiceKey","UTF-8") + "=server-key"); /*Service Key*/
//urlBuilder.append("&" + URLEncoder.encode("fcltyNm","UTF-8") + "=" + URLEncoder.encode("물테마박물관", "UTF-8")); /*시설명*/
URL url = new URL(urlBuilder.toString());
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Content-type", "application/json");
System.out.println("Response code: " + conn.getResponseCode());
BufferedReader rd;
if(conn.getResponseCode() >= 200 && conn.getResponseCode() <= 300) {
rd = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
} else {
rd = new BufferedReader(new InputStreamReader(conn.getErrorStream(), "UTF-8"));
}
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = rd.readLine()) != null) {
sb.append(line);
}
latStringNum = sb.indexOf(latString);
lngStringNum = sb.indexOf(lngString);
String result;
result = sb.toString().substring(latStringNum,(sb.substring(latStringNum).indexOf("</")+latStringNum));
rd.close();
conn.disconnect();
System.out.println(sb.toString());
이건 번외적 질문이지만
뽑아온다고헀을 때 그룹화를 시키려면
제가 지금 머리속에 떠오르는 방법이
이름 리스트 위도 리스트 경도 리스트 각각 저장을 했을 때
0번째 컬럼 값을 가져오면 하나의 그룹이 된다 식으로 가져오면 될거같은데 더좋은 방법이 있을까요?