2013년 8월 21일 수요일




XML처리 방식은 DOM과 SAX방식이 있다.

-DOM(문서 객체 모델) : 완전한 XML 파일을 판독하여 메모리 내에 해당 파일의 계층적  표현을 생성하며, 이를 어플리케이션으로 분석

-SAX : 파일을 스트림으로 판독하여 사용자 어플리케이션에 의해 처리하는 이벤트를 생성

DOM 파서는 메인 메모리에서 어플리케이션에 의해 처리될 수 있는 문서의 트리구조를 생성한다. 파서는 파일에서 메모리로 문서  판독 후 필요한 데이터를 추출하기 위해 구조내에서 탐색하는 방법을 제공한다. DOM트리는 사용 후 파기할 수 있다.

SAX는 xml용 간이 API를 뜻하며, 특정 상황에 맞게 쉽게 조절하는 경량의 API를 제공한다. 또한 자원에 대한 수요가 낮으며, xml파일을 스트림하고 특정 엘리먼트를 만날 경우 콜백 기능을 사용한다.



DOM과 SAX의 차이
SAX는 데이터를 시스템에 공급하는 파서의 지배를 받는다.
DOM은 객체가 직접 데이터를 추출하기 때문에, 제어 흐름이 전햐 다르다.


장점
SAX : 작은 메모리 소비, 적은 메모리 단편화, 빠른 실행 속도
DOM : 쉬운 이해, 구현의 간단함, xml 파일에서의 데이터 순서에 관계없음


C++용 XML파서의 종류
MSXML(DOM), XmlLite(SAX), expat(SAX), xerces(apache사용), TinyXml(DOM,utf-16미지원)

0 개의 댓글:

댓글 쓰기