본문 바로가기
안드로이드+자바

안드로이드 xml파싱 간단한 코드

by 문자메일 2017. 1. 8.
package app.app1;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class MainActivity extends Activity {


private static final String TAG = "TAG";

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Log.i(TAG, "parser()");

//XML 파싱
//R.raw에 token파일을 만들어서 token파일에 적혀 있는 정보를 읽어오기
InputStream inputStream = getResources().openRawResource(R.raw.token);
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferReader = new BufferedReader(inputStreamReader);

StringBuffer stringBuffer = new StringBuffer();
String line = null;

try {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); // XmlPullParserFactory 객체 생성
XmlPullParser parser = factory.newPullParser(); // XmlPullParser 객체 생성
parser.setInput(bufferReader); //XmlPullParser에 Reader객체 넣기

int eventType = parser.getEventType(); //tag의 이벤트? (시작, 끝 등등)구분하기 위함

while(eventType != parser.END_DOCUMENT){//xml파일의 끝을 읽기까지 반복
switch (eventType){
case XmlPullParser.START_DOCUMENT: //다큐먼트 시작일 때
break;
case XmlPullParser.START_TAG:
Log.i(TAG, parser.getName());
if(parser.getName().equals("document")){
int count = parser.getAttributeCount(); //"documnet"하위의 속성? 의 갯수를 반환한다.
Log.i(TAG, "parser.getAttributeCount() : " + count);
for(int i = 0; i<count; i++){
Log.i(TAG, parser.getAttributeName(i));
Log.i(TAG, parser.getAttributeValue(i));
}
}
break;
case XmlPullParser.END_TAG:
Log.i(TAG, "END_TAG : " + parser.getName());
break;
case XmlPullParser.TEXT:
Log.i(TAG, parser.getText()); //읽다가 TEXT가 나올 경우 TEXT 쓰기
break;
}
eventType = parser.next(); //parser가 다음을 가르키게 하기
}
} catch (XmlPullParserException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if(bufferReader!=null)
bufferReader.close();
if(inputStreamReader!= null)
inputStreamReader.close();
if(inputStream!=null)
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}






자바 전체 코드와 xml 정보가 저장되어 있는 파일

댓글