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.. |
'소소한 소스코드' 카테고리의 다른 글
Android Notification 확인하기 (PendingIntent 적용) (0) | 2015.03.30 |
---|---|
Android 상태표시줄에 알림 만들기 Notification (0) | 2015.03.30 |
Android XML 파서(parsing)-네이버 오픈API XmlPullParser (3) | 2015.03.30 |
Android 외부메모리(External Storage)-SDcard에 Data 저장하기 (1) | 2015.03.30 |
Android 내부메모리(Internal Storage)에 Data 저장하기 (0) | 2015.03.30 |