본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[Android/안드로이드] SAX Parser ( 삭스 파서 )

by 돼지왕 왕돼지 2012. 2. 18.
반응형


안녕하세요 돼지왕 왕돼지입니다.
오늘은 SAX Parser 에 대해 간단히 알아보겠습니다.


SAX Parser 는 뭐하는 녀석이고?

 
  : 문서를 순서대로 읽으면서 이벤트를 발생시키는 방식의 parser로 메모리를 거의 사용하지 않으며 속도가 빠릅니다. 중간에 파싱을 멈출 수도 있으나, 읽기전용입니다.

2012/02/18 - [프로그래밍 놀이터/안드로이드] - [Android/안드로이드] XmlPullParser 에 대해 알아봅시다.




예제 코드를 줘보쇼.

  

String xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
               "<order><item>Mouse</item></order>";
try{
   SAXParseFactory factory = SAXParseFacotry.newInstance();
   SAXParser parser = factory.newSAXParser();
   XMLReader reader = parser.getXMLReader();
   SaxHandler handler = new SaxHandler ();
   reader.setContentHandler(handler);
  
   InputStream istream = new ByteArrayInputStream(xml.getBytes("utf-8"));
   reader.parse(new InputSource(istream));
   mResult.setText("result : " + handler.item);
}
 
class SaxHandler extends DefaultHandler{
   boolean initem = false;
   StringBuilder item = new StringBuilder();
 
   public void startDocument () {}
 
   public void endDocument () {}
 
   public void startElement (String uri, String localName, String qName, Attributes atts){
      if (localName.equals("item")){
         initem = true;
      }
   }
 
   public void endElement (String uri, String localName, String qName) {}
 
   public void characters (char[] chars, int start, int length){
      if (initem){
         item.append(chars, start, length);
         initem = false;
      }
   }
}


 
- 파서 팩토리로부터 파서 생성 -> 파서로부터 xml 리더 객체를 얻는다.
   리더에 내용 핸들러를 부착하면 문서를 읽으면서 tag 정보를 발견할 때마다 핸들러로 이벤트를 보내준다.
 
     문서가 시작되면 startDocument()
     문서가 끝나면 endDocument()
     Element가 시작하면 startElement()
     Element가 끝나면 endElement()
     문자열이 발견되면 characters()
 
 
로그인 없이 추천 가능합니다. 손가락 꾸욱~





반응형

댓글