반응형

res 폴더에 있는 XML 파일을 파싱(parsing)하는 소스코드 입니다.


XmlResourceParser 를 이용한 파싱 입니다.



  

메인화면                                                           res폴더의 XML data 읽기

            




XML data 파일 ( res/xml/movies.xml )

 movies.xml

 저장 위치
 

 <?xml version="1.0" encoding="UTF-8"?>

<Movie>

    <Title>

        Alien

        <Genre>

            SF, action, advanture

        </Genre>        

    </Title>

    

    <Title>

        avatar

        <Genre>

            SF, action, advanture

        </Genre>        

    </Title>

    

    <Title>

        Notting Hill

        <Genre>

            romance, melo

        </Genre>        

    </Title>

    

    <Title>

        Nightmare

        <Genre>

            horror, thriller

        </Genre>        

    </Title>    

    

</Movie>


 





Layout 파일

 activity_main.xml

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical">

    

    <EditText android:id="@+id/edit"

        android:layout_width="match_parent"

        android:layout_height="50dp"

        android:padding="5dp"

        android:inputType="text"

        android:hint="input text"/>

    

    <Button android:id="@+id/btn_save"

        android:layout_width="match_parent"

        android:layout_height="50dp"

        android:text="save file into External(SDcard)"

        android:onClick="mOnClick"/>

    

    <Button android:id="@+id/btn_load"

        android:layout_width="match_parent"

        android:layout_height="50dp"

        android:text="load file from External(SDcard)"

        android:onClick="mOnClick"/>

    

    <TextView android:id="@+id/text"

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:padding="5dp"

        android:text="Show data from file"/>


</LinearLayout>





소스파일

 

 MainActivity.java

 public class MainActivity extends Activity {

XmlResourceParser xrp;

TextView text;


@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

text= (TextView)findViewById(R.id.text);

}

//Button을 클릭했을 때 자동으로 호출되는 callback method....

public void mOnClick(View v){

switch( v.getId() ){

case R.id.button:

Resources res= getResources(); //res 폴더 관리자(Resources 객체) 얻어오기

xrp= res.getXml(R.xml.movies); //XmlResourcesParser 얻어오기

String data= getXmlData(); //아래 메소드를 호출하여 XML data를 파싱해서 String 객체로 얻어오기

text.setText(data);    //TextView에 문자열  data 출력

break;

}

}//mOnClick method..

//XmlResourceParser를 이용하여 res/xml 폴더에 있는 movies.xml 파일 파싱하기(parsing)

String getXmlData(){

StringBuffer buffer=new StringBuffer();

String name;

String text;

try {

xrp.next();

int eventType= xrp.getEventType(); //XML의 이벤트 타입 얻어오기..

while( eventType != XmlResourceParser.END_DOCUMENT ){

// XmlResourceParser의 5가지 이벤트 타입

switch( eventType){

case XmlResourceParser.START_DOCUMENT:

buffer.append("Start XML Parsing ......\n\n");

break;

case XmlResourceParser.START_TAG:

name= xrp.getName();

if(name.equals("Movie")) buffer.append("--Movie List Start--\n\n");

else if(name.equals("Title")) buffer.append("Title : ");

else if(name.equals("Genre")) buffer.append("Genre : ");

break;

case XmlResourceParser.TEXT:

buffer.append(xrp.getText());

break;

case XmlResourceParser.END_TAG:

name= xrp.getName();

if(name.equals("Movie")) buffer.append("--Movie List End--\n");

else if(name.equals("Title")) buffer.append("\n");

break;

case XmlResourceParser.END_DOCUMENT:

break;

}

eventType= xrp.next(); //다음 이벤트타입 얻어오기

}//while

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

buffer.append("\n End XML Parsing ......");

return buffer.toString(); //StringBuffer 문자열 객체 반환

}//getXmlData method....

}//MainActivity class..

 









반응형

+ Recent posts