본문 바로가기
Development/Android

[안드로이드][XML] Xml 파싱 SAX XmlPullParser

by 푸민 2015. 9. 26.
반응형


안녕하세요 푸민입니다.

이번에는 안드로이드에서 제공하는 Xml 파서들에 대해서 알아보겠습니다.

먼저 XML 은 다들 아시겠지만 Exchange Markup Language 입니다. 즉 교환을 위한 마크업 언어인것이죠!


https://en.wikipedia.org/wiki/XML - 위키


Xml 방식중에서 오늘은 SAX 방식에 대해서 알아본 텐데요. SAX는 Xml 문서에서 각 태그들의 시작과 끝, 그리고 텍스트를 실행할때 각각 이벤트가 불리는데 이 이벤트로 데이터를 제어하는 것입니다.


public class SimpleXmlPullApp
 
{

     
public static void main (String args[])
         
throws XmlPullParserException, IOException
     
{
         
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
         factory
.setNamespaceAware(true);
         
XmlPullParser xpp = factory.newPullParser();

         xpp
.setInput( new StringReader ( "<foo>Hello World!</foo>" ) );
         
int eventType = xpp.getEventType();
         
while (eventType != XmlPullParser.END_DOCUMENT) {
         
if(eventType == XmlPullParser.START_DOCUMENT) {
             
System.out.println("Start document");
         
} else if(eventType == XmlPullParser.START_TAG) {
             
System.out.println("Start tag "+xpp.getName());
         
} else if(eventType == XmlPullParser.END_TAG) {
             
System.out.println("End tag "+xpp.getName());
         
} else if(eventType == XmlPullParser.TEXT) {
             
System.out.println("Text "+xpp.getText());
         
}
          eventType
= xpp.next();
         
}
         
System.out.println("End document");
     
}
 
}

먼저 XmlPullParserFactory 를 생성합니다. 이 클래스를 이용해서 XmlPullParser 를 생성합니다. 그 다음에 setInput() 을 이용해서 Xml 을 문자열로 변환한 값을 설정합니다. 그리고는 while 을 이용하여 내용을 하나씩 들고 오면 됩니다!


while 의 조건문에서 각 SAX 이벤트를 확인할수 있습니다.


XmlPullParser.END_DOCUMENT : Xml 문서의 끝

XmlPullParser.START_DOCUMENT : Xml 문서의 시작
XmlPullParser.START_TAG : 태그의 시작
XmlPullParser.END_TAG : 태그의 끝
XmlPullParser.TEXT : 태그 사이의 텍스트

이렇게 구분해서 사용하면 SAX 방식을 이용한 Xml 파서를 사용할수 있습니다!

반응형

댓글