안드로이드 XML 파싱
안드로이드 xml 파싱 두번째 파트입니다.
xml 파싱을 하는부분을 설명할것인데
파싱을 하는부분은 안드로이드 프로젝트안에 하나의 엑티비티(MapViewActivity)에서
한다는 가정하에 설명하겠습니다.
url 에 자신의 아이피주소 + jsp파일 + 쿼리문에서 조건의 값을 넣어줍니다.
현재 넣어준 area = busan 이라는값은 데이터베이스에있는 area 라는 멤버중에 Busan만 들고 오게하는 것 입니다.
그래서 part1 부분에서 area가 busan인 값들만 보였던 것 입니다.
<웹서버에 xml 구조로 뿌려놓은 화면>
파싱을하는 소스를 보시겠습니다.
----------------------------------------------------------------------------------------
private ArrayList<MapList> contacts2;
private ArrayList<String> address, latitude, longitude;
address = new ArrayList<String>();
latitude = new ArrayList<String>();
longitude = new ArrayList<String>();
contacts2 = new ArrayList<MapList>();
//xml 파싱하기 위해서 풀 파서 쓴다.
try {
URL text = new URL(url); // 파싱하고자하는 URL
XmlPullParserFactory parserCreator = XmlPullParserFactory .newInstance();
XmlPullParser parser = parserCreator.newPullParser(); // XMLPullParser 사용
parser.setInput(text.openStream(), null); // 파싱하기위해서 스트림을 열어야한다.
int parserEvent = parser.getEventType(); // 파싱할 데이터의 타입을 알려준다.
String tag;
boolean inTitle = false, inTitle2 = false, inTitle3 = false, inTitle4 = false;
while (parserEvent != XmlPullParser.END_DOCUMENT) { // xml 파일의 문서 끝인가?
switch (parserEvent) {
case XmlPullParser.TEXT:
tag = parser.getName();
if (inTitle) {
String max = parser.getText();
address.add(max); // ArrayList에 추가
}else if (inTitle2) {
String max = parser.getText();
latitude.add(max);
}else if (inTitle3){
String max = parser.getText();
longitude.add(max);
}
break;
case XmlPullParser.END_TAG: // 나중에
tag = parser.getName();
if (tag.compareTo("address") == 0) { // 태그가 address인지 비교
inTitle = false;
} else if (tag.compareTo("latitude") == 0) {
inTitle2 = false;
} else if (tag.compareTo("longitude") == 0) {
inTitle3 = false;
}
break;
case XmlPullParser.START_TAG: // 먼저
tag = parser.getName();
if (tag.compareTo("address") == 0) {
inTitle = true;
} else if (tag.compareTo("latitude") == 0) {
inTitle2 = true;
} else if (tag.compareTo("longitude") == 0) {
inTitle3 = true;
}
break;
}
parserEvent = parser.next();
}
} catch (Exception e) {
Log.e("dd", "Error in network call", e);
}
for (int loop = 0; loop < address.size(); loop++) {
contacts2.add(new MapList(address.get(loop), latitude.get(loop), longitude.get(loop)));
}
Toast.makeText(MapViewActivity.this, contacts2.get(0).getAddress(), Toast.LENGTH_SHORT);
// 파싱이 제대로 되었는 지 Toast 를 통해 첫번째 값을 띄워본다.
---------------------------------------------------------------------------------------
MapList.java // MapList 는 파싱을한 주소값, 위도, 경도를 담기위한 클래스입니다. (파싱과는 상관없음)
package BongSa.bongsa;
// MapList 클래스
public class MapList {
private String address,latitude, longitude;
public MapList(){}
public MapList(String address, String latitude, String longitude){
this.address = address;
this.latitude = latitude;
this.longitude = longitude;
}
public void setAddress(String address){
this.address = address;
}
public String getAddress(){
return address;
}
public void setLatitude(String latitude){
this.latitude = latitude;
}
public String getLatitude(){
return latitude;
}
public void setLongitude(String longitude){
this.longitude = longitude;
}
public String getLongitude(){
return longitude;
}
}
'안드로이드 > 개발 TIP' 카테고리의 다른 글
안드로이드 다국어 지원을 위한 언어 코드 (0) | 2017.11.13 |
---|---|
안드로이드/Android 언어 설정 하기 (0) | 2017.11.13 |
안드로이드 다국어 처리를 위한 리소스 폴더 이름 (0) | 2017.11.13 |
[Android] 안드로이드 마켓 앱을 실행하는 방법 (0) | 2017.11.13 |
[Android] 안드로이드 디버깅 - Logcat, Log (0) | 2017.11.13 |
안드로이드 APP 개발 입문_AVD (Android Virtual Device) 설정하기 (0) | 2017.11.13 |
이클립스(4.4)에서 안드로이드 V7 MATERIAL DESIGN 위젯을 사용 (0) | 2017.11.13 |
안드로이드 HTML 파싱 (0) | 2017.11.13 |