안녕하세요. 밤새 앉아서 6시간동안 해결할려고 노력해봤지만 안되서 형님들께 코드 질문드립니다.
public class MainActivity extends AppCompatActivity {
HashMap<String, String> Map;
TextView textView;
String Key = "";
String endPoint = "http://api.gwangju.go.kr/xml/stationInfo";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Map = new HashMap<>();
MyAsyncTask myAsyncTask = new MyAsyncTask();
myAsyncTask.execute();
textView = findViewById(R.id.text);
textView.setText(Map.get("동원촌"));
}
public class MyAsyncTask extends AsyncTask<String, Void, String>{
protected String doInBackground(String... strings) {
try {
URL url = new URL(endPoint + "?serviceKey=" + Key);
InputStream stream = url.openStream();
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser parser = factory.newPullParser();
parser.setInput(new InputStreamReader(stream, "UTF-8"));
String busStopName = "";
String butStopID = "";
String curTag = "";
int type = parser.getEventType();
while(type != XmlPullParser.END_DOCUMENT){
switch (type){
case XmlPullParser.START_DOCUMENT:
break;
case XmlPullParser.END_TAG:
Map.put(busStopName, butStopID);
break;
case XmlPullParser.START_TAG:
if(parser.getName().equals("STATION_LIST"))
Log.e("ok", "chek");
curTag = parser.getName();
break;
case XmlPullParser.TEXT:
if(curTag.equals("BUSSTOP_NAME")){
Log.e("BUSSTOP_NAME", parser.getText());
busStopName = parser.getText();
}
else if(curTag.equals("BUSSTOP_ID")){
Log.e("BUSSTOP_ID", parser.getText());
butStopID = parser.getText();
}
break;
}
type = parser.next();
}
}catch (Exception e){
e.printStackTrace();
}
return null;
}
protected void onPostExecute(String s){
super.onPostExecute(s);
}
}
}
오픈 API xml파일을 파싱했습니다.(개인키는 부끄러워서 가렸습니다.)
분명 Log.e는 확실하게 나오고 있는데
busStopName = parser.getText();
butStopID = parser.getText();
요기서 변수값이 변경이 안되는 것 같은데 이유를 잘모르겠습니다. 혹시 간단한 조언이라도 가능할까요?