마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

긴 값에서 중복되는 특정 값만 뽑아오려면 어떻게해야할까요(위도,경도등)

0 추천

문화재단에서 제공하는 데이터 값을 뽑아오면

<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번째 컬럼 값을 가져오면 하나의 그룹이 된다 식으로 가져오면 될거같은데 더좋은 방법이 있을까요?

zkzkzhzj (1,670 포인트) 님이 2019년 5월 12일 질문

1개의 답변

0 추천
 
채택된 답변

받아온 데이터가 xml형식인것 같으니, xml파싱 하시는 법을 찾아 보세요.

https://stackoverflow.com/questions/8850067/how-to-parse-xml-file-on-android

뱅구다 (11,280 포인트) 님이 2019년 5월 13일 답변
zkzkzhzj님이 2019년 5월 13일 채택됨
...