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....
}