manifest
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="kr.ac.jj.debtolee.pharmacy"> <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:usesCleartextTraffic="true" android:theme="@style/Theme.Pharmacy"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
MainActivity.java
package kr.ac.jj.debtolee.pharmacy; import androidx.appcompat.app.AppCompatActivity; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.View; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserFactory; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLEncoder; public class MainActivity extends AppCompatActivity { XmlPullParser xpp; String key="자신의 서비스키"; String data; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); new Thread(new Runnable() { @Override public void run() { data=getXmlData(); runOnUiThread(new Runnable() { @Override public void run() { Log.d("MyCat",data); } }); } }).start(); } String getXmlData(){ StringBuffer buffer=new StringBuffer(); // String str= edit.getText().toString();//EditText에 작성된 Text얻어오기 // String location = URLEncoder.encode(str); // String query="%EC%A0%84%EB%A0%A5%EB%A1%9C"; int pageNum = 1; int pageCount = 10; String serviceKey=""; String queryUrl="http://apis.data.go.kr/B552657/ErmctInsttInfoInqireService/getParmacyFullDown?pageNo="+pageNum+"&numOfRows="+pageCount+"&ServiceKey="+serviceKey; try{ URL url= new URL(queryUrl);//문자열로 된 요청 url을 URL 객체로 생성. InputStream is= url.openStream(); //url위치로 입력스트림 연결 XmlPullParserFactory factory= XmlPullParserFactory.newInstance();//xml파싱을 위한 XmlPullParser xpp= factory.newPullParser(); xpp.setInput( new InputStreamReader(is, "UTF-8") ); //inputstream 으로부터 xml 입력받기 String tag; xpp.next(); int eventType= xpp.getEventType(); while( eventType != XmlPullParser.END_DOCUMENT ){ switch( eventType ){ case XmlPullParser.START_DOCUMENT: buffer.append("파싱 시작...\n\n"); break; case XmlPullParser.START_TAG: tag= xpp.getName();//테그 이름 얻어오기 if(tag.equals("item")) ;// 첫번째 검색결과 else if(tag.equals("dutyAddr")){ buffer.append("주소 : "); xpp.next(); buffer.append(xpp.getText());//title 요소의 TEXT 읽어와서 문자열버퍼에 추가 buffer.append("\n"); //줄바꿈 문자 추가 } else if(tag.equals("dutyEtc")){ buffer.append("비교 : "); xpp.next(); buffer.append(xpp.getText());//category 요소의 TEXT 읽어와서 문자열버퍼에 추가 buffer.append("\n");//줄바꿈 문자 추가 } else if(tag.equals("dutyInf")){ buffer.append("기관설명상세 :"); xpp.next(); buffer.append(xpp.getText());//description 요소의 TEXT 읽어와서 문자열버퍼에 추가 buffer.append("\n");//줄바꿈 문자 추가 } else if(tag.equals("dutyMapimg")){ buffer.append("간이 약도 :"); xpp.next(); buffer.append(xpp.getText());//telephone 요소의 TEXT 읽어와서 문자열버퍼에 추가 buffer.append("\n");//줄바꿈 문자 추가 } else if(tag.equals("dutyName")){ buffer.append("기관명 :"); xpp.next(); buffer.append(xpp.getText());//address 요소의 TEXT 읽어와서 문자열버퍼에 추가 buffer.append("\n");//줄바꿈 문자 추가 } else if(tag.equals("dutyTel1")){ buffer.append("대표 전화 :"); xpp.next(); buffer.append(xpp.getText());//mapx 요소의 TEXT 읽어와서 문자열버퍼에 추가 buffer.append(" , "); //줄바꿈 문자 추가 } else if(tag.equals("dutyTime1c")){ buffer.append("진료시간(월요일)C :"); xpp.next(); buffer.append(xpp.getText());//mapy 요소의 TEXT 읽어와서 문자열버퍼에 추가 buffer.append("\n"); //줄바꿈 문자 추가 } else if(tag.equals("dutyTime2c")){ buffer.append("진료시간(화요일)C :"); xpp.next(); buffer.append(xpp.getText());//mapy 요소의 TEXT 읽어와서 문자열버퍼에 추가 buffer.append("\n"); //줄바꿈 문자 추가 } else if(tag.equals("dutyTime3c")){ buffer.append("진료시간(수요일)C :"); xpp.next(); buffer.append(xpp.getText());//mapy 요소의 TEXT 읽어와서 문자열버퍼에 추가 buffer.append("\n"); //줄바꿈 문자 추가 } else if(tag.equals("dutyTime4c")){ buffer.append("진료시간(목요일)C :"); xpp.next(); buffer.append(xpp.getText());//mapy 요소의 TEXT 읽어와서 문자열버퍼에 추가 buffer.append("\n"); //줄바꿈 문자 추가 } else if(tag.equals("dutyTime5c")){ buffer.append("진료시간(금요일)C :"); xpp.next(); buffer.append(xpp.getText());//mapy 요소의 TEXT 읽어와서 문자열버퍼에 추가 buffer.append("\n"); //줄바꿈 문자 추가 } else if(tag.equals("dutyTime6c")){ buffer.append("진료시간(토요일)C :"); xpp.next(); buffer.append(xpp.getText());//mapy 요소의 TEXT 읽어와서 문자열버퍼에 추가 buffer.append("\n"); //줄바꿈 문자 추가 } else if(tag.equals("dutyTime7c")){ buffer.append("진료시간(일요일)C :"); xpp.next(); buffer.append(xpp.getText());//mapy 요소의 TEXT 읽어와서 문자열버퍼에 추가 buffer.append("\n"); //줄바꿈 문자 추가 } else if(tag.equals("dutyTime8c")){ buffer.append("진료시간(공휴일)C :"); xpp.next(); buffer.append(xpp.getText());//mapy 요소의 TEXT 읽어와서 문자열버퍼에 추가 buffer.append("\n"); //줄바꿈 문자 추가 } else if(tag.equals("dutyTime1s")){ buffer.append("진료시간(월요일)S :"); xpp.next(); buffer.append(xpp.getText());//mapy 요소의 TEXT 읽어와서 문자열버퍼에 추가 buffer.append("\n"); //줄바꿈 문자 추가 } else if(tag.equals("dutyTime2s")){ buffer.append("진료시간(화요일)S :"); xpp.next(); buffer.append(xpp.getText());//mapy 요소의 TEXT 읽어와서 문자열버퍼에 추가 buffer.append("\n"); //줄바꿈 문자 추가 } else if(tag.equals("dutyTime3s")){ buffer.append("진료시간(수요일)S :"); xpp.next(); buffer.append(xpp.getText());//mapy 요소의 TEXT 읽어와서 문자열버퍼에 추가 buffer.append("\n"); //줄바꿈 문자 추가 } else if(tag.equals("dutyTime4s")){ buffer.append("진료시간(목요일)S :"); xpp.next(); buffer.append(xpp.getText());//mapy 요소의 TEXT 읽어와서 문자열버퍼에 추가 buffer.append("\n"); //줄바꿈 문자 추가 } else if(tag.equals("dutyTime5s")){ buffer.append("진료시간(금요일)S :"); xpp.next(); buffer.append(xpp.getText());//mapy 요소의 TEXT 읽어와서 문자열버퍼에 추가 buffer.append("\n"); //줄바꿈 문자 추가 } else if(tag.equals("dutyTime6s")){ buffer.append("진료시간(토요일)S :"); xpp.next(); buffer.append(xpp.getText());//mapy 요소의 TEXT 읽어와서 문자열버퍼에 추가 buffer.append("\n"); //줄바꿈 문자 추가 } else if(tag.equals("dutyTime7s")){ buffer.append("진료시간(일요일)S :"); xpp.next(); buffer.append(xpp.getText());//mapy 요소의 TEXT 읽어와서 문자열버퍼에 추가 buffer.append("\n"); //줄바꿈 문자 추가 } else if(tag.equals("dutyTime8s")){ buffer.append("진료시간(공휴일)S :"); xpp.next(); buffer.append(xpp.getText());//mapy 요소의 TEXT 읽어와서 문자열버퍼에 추가 buffer.append("\n"); //줄바꿈 문자 추가 } else if(tag.equals("hpid")){ buffer.append("기관ID :"); xpp.next(); buffer.append(xpp.getText());//mapy 요소의 TEXT 읽어와서 문자열버퍼에 추가 buffer.append("\n"); //줄바꿈 문자 추가 } else if(tag.equals("postCdn1")){ buffer.append("우편번호1 :"); xpp.next(); buffer.append(xpp.getText());//mapy 요소의 TEXT 읽어와서 문자열버퍼에 추가 buffer.append("\n"); //줄바꿈 문자 추가 } else if(tag.equals("postCdn2")){ buffer.append("우편번호2 :"); xpp.next(); buffer.append(xpp.getText());//mapy 요소의 TEXT 읽어와서 문자열버퍼에 추가 buffer.append("\n"); //줄바꿈 문자 추가 } else if(tag.equals("wgs84Lon")){ buffer.append("병원경도 :"); xpp.next(); buffer.append(xpp.getText());//mapy 요소의 TEXT 읽어와서 문자열버퍼에 추가 buffer.append("\n"); //줄바꿈 문자 추가 } else if(tag.equals("wgs84Lat")){ buffer.append("병원위도 :"); xpp.next(); buffer.append(xpp.getText());//mapy 요소의 TEXT 읽어와서 문자열버퍼에 추가 buffer.append("\n"); //줄바꿈 문자 추가 } break; case XmlPullParser.TEXT: break; case XmlPullParser.END_TAG: tag= xpp.getName(); //테그 이름 얻어오기 if(tag.equals("item")) buffer.append("\n");// 첫번째 검색결과종료..줄바꿈 break; } eventType= xpp.next(); } } catch (Exception e){ e.printStackTrace(); } buffer.append("파싱 끝\n"); return buffer.toString();//StringBuffer 문자열 객체 반환 }//getXmlData method.... }