DOM/SAX

개념
DOM - XML 문서를 트리 형태의 구조로 변경하여 접근하는 API - XML 문서 전체를 파싱하여 메모리에 올려놓고 요청되는 노드 데이타를 메모리에서 끌어댕기는 Pull방식을 사용하는 기법 SAX - 자료 구조를 만들지 않고 XML 문서를 스캔해가면서 순차적으로 이벤트를 발생시켜서 XML문서에 접근할 수 있게 해주는 API - XML문서를 전체 메모리에 올려 파싱하는 방식이 아닌 XML문서를 순차적으로 읽어들여 이벤트를 해당 프로시져에게 처리하라고 밀어주는 방식을 이용한 파싱 기법

I. XML Parser 표준 API인 DOM & SAX의 이해

가. XML Parser의 기능

- XML과 DTD를 읽어서 문서의 정확성을 검증하고, 문서내용과 문서 구조에 접근 할 수 있게 해주는 라이브러리 형태의 프로그램

- XML 문서가 XML의 Constraints을 따르는 지 검사하고, Application 에게 XML 문서의 데이터 또는 자료구조를 제공하며 Element, Attributes, Entity 등의 정보를 생성함

 

나. XML 프로세싱의 방법

방법

주요 내용

XML 브라우저이용방법

- 별도의 프로그램이 없이, XML 브라우저에 전적으로 의존하는 방식

- 간단한 XML 문서는 가능하지만, 다양한 XML 응용에는 융통성 적음

XML 프로세스API 이용방법

- 이벤트 기반의 SAX (Simple API for XML)

- 객체모델기반의 DOM (Document Object Model)

 

다. DOM(Document object model) & SAX(Simple API of XML)의 정의

구분

정   의

DOM

- XML 문서를 트리 형태의 구조로 변경하여 접근하는 API

- XML 문서 전체를 파싱하여 메모리에 올려놓고 요청되는 노드 데이타를 메모리에서 끌어댕기는 Pull방식을 사용하는 기법

SAX

- 자료  구조를  만들지  않고  XML  문서를  스캔해가면서  순차적으로  이벤트를  발생시켜서  XML문서에  접근할 수 있게 해주는  API

- XML문서를 전체 메모리에 올려 파싱하는 방식이 아닌 XML문서를 순차적으로 읽어들여 이벤트를 해당 프로시져에게 처리하라고 밀어주는 방식을 이용한 파싱 기법

 

라. DOM & SAX의 특징

DOM

SAX

- 객체 모델 기반 API

- 이벤트 기반 API

- 노드(node)단위로 데이터 처리

- SAX Parser는 XML태그 시작과 끝에서 이벤트 생성

- 문서의 구조 정보와 내용을 객체로 이용

- XML문서를 하나의 긴 문자열로 간주

- 메모리 적재 방식

- 라인 인터프리트 방식

 

 

II. DOM & SAX 구성도 및 SAX 이벤트 유형

가. DOM 구성도

나. DOM의 계층구조

Level

설  명

Level 1

- Core, HTML & XML 문서 모델에 관한 내용

Level 2

- Style Sheet를 적용한 객체 모델 지원

Level 3

- 문서의 스타일, 내용, 구조에 동적 접근 및 갱신

 

다. SAX 구성도

 

라. SAX Event 유형

유형

설  명

Start Doc / End Doc

- 문서의 시작과 끝을 알림

Start Element

- 엘리먼트의 시작을 알림

- 엘리먼트 내의 모든 속성과 태그 포함

End Element

- 엘리먼트의 끝을 알림

Characters

- Character Data 포함

Warning Error

- 화상 오류를 표시

 

 

III. DOM & SAX 접근방식 및 비교

가. DOM과 SAX 접근 방식

DOM

SAX

- DOM은 XML Parser와 Application 사이의 계층에 놓여짐

- XML Parser에서 얻은 결과를 이용하여, 문서 객체 모델 DOM을 만듬

- 표준DOM을 이용하면 Parser에 독립적인 응용 프로그램 개발이 가능함

- SAX는 XML의 각 구성요소들을 순차적으로 접근하면서 이벤트 방식으로 문서를 취급

- XML문서의 각 요소나 속성, 혹은 문자열 들에 접근할 때 발생하는 이벤트를 인식하여 XML 문서를 처리

- 응용 프로그램은 이러한 Event를 가로채서 Element의 이름이나 속성값을 얻어내는 등 처리할 작업과 관련된 일을 진행할 수 있음

 

나. DOM과 SAX 비교

구분

DOM

SAX

접근방법

- 트리 구조

- Event Driven 구조

처리방법

- XML문서를  Tree 형태의 자료 구조로 변경하여 접근

- 자료 구조 없이 문서를  SCAN, 순차적으로 이벤트를 발생시켜 처리

메모리

- 사용량 많음

- 사용량 적음

문서구조

- 동적 변경

- 어려움

장점

- 문서  구조에  대한  풍부한  표현력

- XML 문서의 생성, 편집이 가능함

- XML 문서의 크기에 관계없이 파싱이 가능

- 자신만의 데이터구조생성 가능

- XML 문서의 일부분만 처리해도 될 때 장점

- 단순하고 속도가 빠름

단점

- 메모리 요구량이 많음

- 처리 속도가 늦음

- 문서의 구조에 대한 정보 파악이 불리함

- 문서 생성, 편집이 불가능

(Read Only)

적용분야

- 구조적 접근이 필요한 경우

- 특정 부분으로 이동할 경우

- 문서 정보를 쉽게 파악하고자할 때 사용

- 문서 일부분만 읽는 경우

- 유효성처리, 데이터 변환

- 동일 오류 처리

- 엘리먼트를 일부 추출하는 경우

 

IV. XML 문서의 활용현황 및 고려사항

가. 웹상에 존재하는 여러 형태의 구조적인 문서를 분석하여 사용자 응용프로그램에 맞게 재생성 및 형태를 통해 사용성을 높이고 있음

나. 웹 어플리케이션과 프로그램에 부담을 줄이기 위해 DOM과 SAX의 장점을 활용한 JDOM 방식의 XML 프로세서 적용을 고려해야 함

댓글