DOM versus SAX


다음 내용은 '소설같은 XML & XML Web Services'에서 발췌한 내용이다.


Document Object Model
1.1 DOM의 처리 방식
DOM은 XML 문서를 읽은 후 메모리에 트리 구조를 생성한다. DOM 파서는 XML 문서를 읽으면서 컴퓨터의 메모리에 트리 모양의 자료 구조를 생성하게 된다. 프로그래머는 DOM에서 제공되는 트리 기반의 API를 이용해서 어플리케이션을 구축하면 된다.


1.2 DOM의 특징
XML 문서의 구조를 메모리에 적재하고 있기 때문에 XML 문서의 수정이나 삭제가 가능하고, XML Editor와 같이 XML 문서의 구조를 계속해서 유지하고 있어야 하는 어플리케이션에 효과적으로 사용될 수 있다.

이에 반해 DOM은 XML 문서를 메모리에 적재하기 때문에 XML 문서 만큼의 메모리 공간을 필요로 한다. XML 문서의 크기가 클 경우 메모리의 양도 그만큼 많이 필요한 것이다. 또한 XML 문서를 메모리에 적재하는 시간이 오래 걸리기 때문에 어플리케이션의 수행 속도가 SAX에 비해 떨어진다.



Simple API for XML
2.1 SAX의 처리 방식
만약 XML 문서에서 <name>엘리먼트를 찾아 처리하는 것이 못적이라면 <name>엘리먼트를 찾을 때마다 "찾았다"라는 단어를 출력하도록 이벤트를 하나 작성하였다.

작성한 이벤트를 SAX 파서에 등록하면 SAX 파서는 입력되는 XML 문서를 읽다가 <name> 엘리먼트를 찾으면 등록한 이벤트를 수행하게 된다.


2.2 SAX의 특징
SAX는 DOM과 같이 메모리에 XML 문서를 적재하지 않기 때문에 메모리 공간을 필요로 하지 않는다. 따라서 XML 문서의 크기에 상관없이 XML 문서를 처리할 수 있다.

또한 XML 문서를 처음부터 끝까지 읽으면서 처리하는 방식을 사용하기 때문에 순차적인 처리에 있어서 아주 빠른 성능을 나타낸다.

이에 반해 SAX는 XML 문서의 구조를 저장하고 있지 않기 때문에 XML 문서의 수정 및 삭제가 불가능하다. 또한 여러번에 걸쳐 XML 문서를 처리해야 할 경우 매번 XML 문서를 파싱해야 하므로 어플리케이션의 성능이 떨어지게 된다.


Reference : 소설같은 XML & XML Web Services
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Proneer
TAG , ,

댓글을 달아 주세요


티스토리 툴바