안드로이드

안드로이드 네이버 검색 API 사용할 때 XML 파싱하는 법

알통몬_ 2017. 4. 19. 09:25
반응형


안녕하세요 알통몬입니다.

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^

 

간단하게 포스팅합니다.

안드로이드에서 네이버 오픈 API 사용할 때

네이버 오픈 API의 경우 request를 보내고 request에 대한 응답을 XML로 보내주는데요.

안드로이드에서 받은 XML형식의 데이터를 파싱하는 방법입니다.

String location = URLEncoder.encode(searchWord, "UTF-8");

            String sendQuery = "https://openapi.naver.com/v1/search/local.xml?query=" + location +

 "&display=" + DISPLAY_COUNT + "&start=" + START_COUNT;

            URL url = new URL(sendQuery);

            HttpURLConnection conn = (HttpURLConnection) url.openConnection();

            conn.setRequestMethod(SEND_TYPE);

            conn.setRequestProperty("Content-Type", "application/xml");

            conn.setRequestProperty("X-Naver-Client-Id", CLIENT_ID); //발급받은ID

            conn.setRequestProperty("X-Naver-Client-Secret", CLIENT_PASSWORD);//발급받은PW

            XmlPullParserFactory factory = XmlPullParserFactory.newInstance();

            XmlPullParser xpp = factory.newPullParser();

            xpp.setInput(conn.getInputStream(), null);

            String tag;


            xpp.next();

            int eventType = xpp.getEventType();

            while (eventType != XmlPullParser.END_DOCUMENT) {

                switch (eventType) {

                    case XmlPullParser.START_DOCUMENT:

                        break;

                    case XmlPullParser.START_TAG:

                        tag = xpp.getName();    //테그 이름 얻어오기

                        if (tag.equals("item")) ;// 첫번째 검색결과

                        else if (tag.equals("title")) {

                            xpp.next();

                            if (xpp.getText().contains("Naver Open API")) {

                                break;

                            } else {

                                parkName = xpp.getText().replace("<b>", "").replace("</b>", "");

                            }

                        } else if (tag.equals("address")) {

                            xpp.next();

                            parkAddress = xpp.getText();

                        } else if (tag.equals("telephone")) {

                            xpp.next();

                            parkTel = xpp.getText();

                        } else if (tag.equals("mapx")) { // getmapx value

                            xpp.next();

                            xValue = Integer.parseInt(xpp.getText());

                        } else if (tag.equals("mapy")) { // getmapy valye

                            xpp.next();

                            yValue = Integer.parseInt(xpp.getText());

                        }

                        break;

                    case XmlPullParser.TEXT:

                        break;

                    case XmlPullParser.END_TAG:

                        tag = xpp.getName();    //테그 이름 얻어오기

                        if (tag.equals("item"))

                            break;

                }

                eventType = xpp.next();

            } 


이상입니다.



반응형