728x90

어플 내부에 있는 XML 파일을 파싱하는 예제다.

=== student.xml ===

 <person>
    <student>
        <name>홍길동</name>
        <age>32</age>
        <address>용인</address>
    </student>
    <student>
        <name>이순신</name>
        <age>31</age>
        <address>서울</address>
    </student>
    <student>
        <name>강감찬</name>
        <age>35</age>
        <address>충청</address>
    </student>
</person>


예제는 화면 출력 용도가 아니라 로그파일에 기록되는 결과를 보기 위한 목적이다.

파싱하는 소스 코드

- 먼저 layout 디렉토리 밑에 raw 라는 디렉토리를 생성한다.

- raw 디렉토리에 student.xml 파일을 생성하고 xml 내용을 추가한다.

- MainActivity.java 에서 아래와 같은 코드를 작성한다.


import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

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;

public class MainActivity extends AppCompatActivity {
    final static String TAG ="XML";

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

        parser();
    }

    private void parser(){
        Log.i(TAG, "parser()");

        // 내부 xml파일이용시
        InputStream inputStream = getResources().openRawResource(R.raw.student);
        InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
        BufferedReader reader = new BufferedReader(inputStreamReader);

        XmlPullParserFactory factory = null;
        XmlPullParser xmlParser = null;

        try {
            factory = XmlPullParserFactory.newInstance();
            xmlParser = factory.newPullParser();
            xmlParser.setInput(reader);

            int eventType = xmlParser.getEventType();

            while (eventType != XmlPullParser.END_DOCUMENT){
                switch (eventType){
                    case XmlPullParser.START_DOCUMENT:
                        Log.i(TAG, "xml START");
                        break;
                    case XmlPullParser.START_TAG:
                        Log.i(TAG, "Start TAG :" + xmlParser.getName());
                        break;
                    case XmlPullParser.END_TAG:
                        Log.i(TAG,"End TAG : "+ xmlParser.getName());
                        break;
                    case XmlPullParser.TEXT:
                        Log.i(TAG,"TEXT : "+ xmlParser.getText());
                        break;
                }
                try {
                    eventType = xmlParser.next();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        } catch (XmlPullParserException e) {
            e.printStackTrace();
        } finally{
            try{
                if(reader !=null) reader.close();
                if(inputStreamReader !=null) inputStreamReader.close();
                if(inputStream !=null) inputStream.close();
            }catch(Exception e2){
                e2.printStackTrace();
            }
        }


    }
}


이제 컴파일을 하고 결과를 살펴본다.






이제 다음에는 ListView 에 출력하는 걸 해보면 XML 파싱을 정확하게 파악할 수 있다.

728x90
블로그 이미지

Link2Me

,