본문 바로가기

기술 용어 검색

DOM vs SAX

DOM vs SAX

DOM (Document Object Model)의 특징
- 객체 모델 기반 API
- 노드(node) 단위로 데이터 처리
- 문서의 구조 정보와 내용을 객체로 이용
- 메모리 적재방식

SAX (Simple API for XML)의 특징
- 이벤트 기반 API
- SAX Parser는 XML 태그 시작과 끝에서 이벤트 생성
- XML 문서를 하나의 긴 문자열로 간주
- 라인 인터프리트방식

DOM과 SAX의 처리방식 비교

 
DOM은 Pull 방식 사용
SAX는 Push 방식 사용
 
XML 문서가 파서내로 입력으로 들어올때 DOM 파서는 XML 문서 자체를 파싱하여 메모리에 올려놓고 요청되는 노드데이터를 메모리에서 끌어댕겨서 쓰는 방식을 취한다 해서 Pull 방식이라 하고.
 
SAX 파서는 XML 문서가 입력으로 들어오면 해당 문서를 전체 메모리에 올려 파징하는 방식이 아닌 XML 문서를 순차적으로 읽어들여 이벤트를 틱틱 해당 프로그에게 처리하라고 밀어주는 방식이다.
 
여기서 발생하는 이벤트로는 "문서 시작한다", "엘리먼트 시작한다", : 엘리먼트 끝나다" 등등이러한  XML 관련 노드가 처리될 때 나타난다. 아래는 이러한 내용을 표현한 그림이다. 각각의 파서에서 화살표가 나가고 들어가는 부분을 유심히 보기 바란다.
 

DOM이 메모리상에 해당 문서를 파징해서 올리면 메모리상에는 다음과 같은 메타 데이터들이 구조화되서 함께 저장된다.


SAX는 처리할때 다음과 같은 처리 모델을 일반적으로 취한다.

 

DOM은 다음과 같은 상황에 적용이 가능하다.
- 문서를 수정, 삭제, 추가하고자 할 때
- 랜덤 엑세스를 하고자 할 때
- 새로운 데이터 구조를 생성하고자 할 때


한편 SAX는 다음과 같은 상황에 적용이 가능하다.
- 큰 문서를 핸들링하고자 할 때
- 빠른 처리를 요할 때 (단, 부대조건을 따진 후)
- 이벤트 스트림에서 문서를 필터링하고자 할 때
- 데이터 일부만이 필요할 때
- 문서 자체에 대한 변경이 필요하지 않을 때


아래는 DOM과 SAX의 기술적 특징을 비교 분석하여 정리한 도표이다.

 
 

'기술 용어 검색' 카테고리의 다른 글

WRML(Web Reporting Markup Language)  (0) 2008.01.02
m-Commerce  (0) 2008.01.02
Wibro (Wireless Broadband)  (0) 2008.01.02