SAX
http://www.saxproject.org
Simple API for XML
특징
이벤트 처리 방식
메모리 사용이 적고 빠르다.
읽기 전용 : 순차적으로만 처리하기 때문에 뒤로 다시 돌아갈 수 없다.
기본 SAX 이벤트
startDocument : 문서의 시작에 대한 통지 메세지를 얻는다.
endDocument : 문서의 끝에 대한 통지 메세지를 얻는다.
startElement : 태그의 이름과 그 태그가 가지고 있을 수 있는 attribute를 얻는다.
endElement : element의 끝에 대한 통지 메세지를 얻는다.
characters : 파서는 character 데이터에 대한 각각의 덩어리를 보고하기 위해 이 메소드를 호출할 것이다.
추가 SAX 이벤트
ignorableWhitespace : element 안에 공백에 반응(무시)하도록 한다.
warning : XML 1.0 추천사항에 정의된 치명적인 오류나 오류가 아닌 조건에 대해 보고한다.
error : XML 문서는 valid(유효) 제약조건에 실패했을 때 적절한 오류를 발생한다.
예) element가 DTD에서 2번 정의되었다.
fatalError : 복구할 수 없는 오류
예)well-formed 제약조건의 위반; 문서는 파서가 이 메소드를 호출 한 후에는 쓸모없어진다.
SAX2 handler 인터페이스
ContentHandler : 문서에 대한 논리적인 내용의 통지사항을 얻는다.
startDocument, startElement, characters등
ErrorHandler : (warning)이벤트 발생시 exception 대신 XML 처리 오류
DTDHandler : DTD기반 이벤트의 통지사항을 얻는다. 표기법과 parse되지 않는 entity 선언을 보고한다.
EntityResolver : 외부 entity를 다룬다.
SAX in JAVA
JAXP를 이용하여 XML문서를 파싱
import org.xml.sax.*;
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.SAXParser;
DefaultHandler class
Class : org.xml.sax.helpers.DefaultHandler;
아무 것도 정의하지 않는 메소드와 함께 4개의 핸들 인터페이스가 구현되어 있다.
프로그래머는 DefaultHandler를 상속받아 사용할 수 있다.
프로그래머는 이벤트에 대해 필요한 메소드만 재정의(override)할 수 있고 나머지는 무시할 수 있다.
'컴퓨터 공부 > XML' 카테고리의 다른 글
DOM 실습 소스 (0) | 2009.05.23 |
---|---|
[5월 22일 3교시] SQL을 사용하여 XML 데이터 받아오기 (0) | 2009.05.22 |
[5월 20일 2교시] DOM (0) | 2009.05.20 |
[5월 19일 3교시] XSLT 실습 (0) | 2009.05.19 |
[5월 19일 2교시] XSLT elements 2 (0) | 2009.05.19 |