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

구글맵api 좌표 파싱 질문드립니다.

0 추천

예시 )  http://maps.googleapis.com/maps/api/geocode/xml?address=%EC%84%B8%EC%A2%85%EB%8C%80%EB%A1%9C%20110&language=ko&sensor=false

 

여기에잇는 xml을 좌표부분만 파싱을 해오려고합니다.

소스를

class SearchProcess1 extends AsyncTask<Void, String, String> {
     private String status;
     

     // 스레드 실제 작업
     @Override
     protected String doInBackground(Void... param) {
     
      String adress ="";
      
      try {
       adress=URLEncoder.encode(pref.getString("pAdress", ""),"UTF-8");
      } catch (UnsupportedEncodingException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }
      Log.d(TAG, adress);
      BasicNameValuePair svc = new BasicNameValuePair("svc",
        "Depositinofo");
      BasicNameValuePair padress = new BasicNameValuePair("padress", "http://maps.googleapis.com/maps/api/geocode/xml?address="+adress+"&language=ko&sensor=false");
     

      List<NameValuePair> paramList = new ArrayList<NameValuePair>();
      paramList.add(svc);
      paramList.add(padress);
    

      status = clsServerConn.getResponse(URLmanager.getUrl()
        + "/AppSvc/Android/adress.aspx", paramList, 30);
      
      
      
      return status;
     }

     // 스레드 작업 완료 후 호출
     @Override
     protected void onPostExecute(String status) {
      Log.d(TAG, status);
      try {
       SAXBuilder builder = new SAXBuilder();
       InputStream stream = new ByteArrayInputStream(
         status.getBytes("UTF-8"));
       Document doc = builder.build(stream);
       Element xmlroot = doc.getRootElement();
        editor.putString("lat" , xmlroot.getChild("lat")
          .getValue().replace(" ", ""));
        editor.putString("lng" , xmlroot.getChild("lng")
          .getValue().replace(" ", ""));

       
       editor.commit();

       clsUtil.runIntent(NmapActivity.class);

       finish();
      } catch (JDOMException jdome) {
       onPostExecute("ERR003");
      } catch (IOException ioe) {
       onPostExecute("ERR003");
      } catch (NullPointerException npe) {
       onPostExecute("ERR003");
      }

     }
    }
   });// onPostExecute

 

이렇게 작성을했습니다.

밑에는 에러코드입니다.

파싱하는 부분에서 잘못된거같은데...

어떤식으로 수정을해야될지 도저히 감이 안옵니다..

아잉훗 (570 포인트) 님이 2015년 7월 1일 질문

1개의 답변

0 추천
 
채택된 답변

전체 xml 데이터 파싱하시지 마시고

string 에서 정규표현식으로 

<location><lat>(\d*\.\d+)</lat><lng>(\d*\.\d+)</lng></location>

와 같이 필요한 부분만 추출해서 쓰시면 될겁니다.

익명사용자 님이 2015년 7월 1일 답변
아잉훗님이 2015년 7월 3일 채택됨
string에서 정규표현식으로....라는게 무슨의미인지 잘이해가 안됩니다.... 이번에 처음 접하는 부분이라....
자세히 설명좀 부탁드릴수있을까요..?
http request 로 넘어오는 값이 xml 스트링이니 그 스트링에서 원하는 부분만 가져오면 됩니다.
...