간단한 XML 소개와 XML 파서 종류

데이터 구조가 잡히기 전 임시? 데이터 파일용으로 xml을 사용하려고 합니다. 뭐 만들어두면 간단한 설정파일등에 사용도 가능하구요.

기존에 잘 썼던 TinyXml을 쓸까 하다가 MSXml과 XmlLite등 다른 것들도 포착이 되네요. 세부적으로 프로그래밍 API까진 아니고 간단하게 리서치 한 내용을 포스팅 해봅니다.

  • XML 파싱 방식
SAX(Simple API for XML)와 DOM(Document Object Model)이 있습니다.

  • SAX(Simple API for XML)
XML문서 구성요소를 읽어 들일때마다 이벤트로 처리해 주기 때문에 대용량 처리에 적합하고 빠르고, 대용량 문서나 많은 문서를 처리할 때 적절합니다. 단점으로는 읽어낸 데이터를 다시 이용할 수 없어 재활용하려면 자료구조를 따로 만들어줘야 합니다.
  • DOM(Document Object Model)
각각의 구성요소를 객체로 모델링화해서 객체가 가진 속성과 메소드를 통해 문서의 구조와 데이터를 다룰 수 있도록 W3C가 국제표준으로 제안한 XML 프로그래밍 인터페이스입니다.

XML 문서를 해석하여 DOMTree형태로 메모리에 올립니다. 해서 자료구조를 가지고 있어서 데이터를 바로 읽고 수정뿐 아니라 노드 추가등의 작업도 가능합니다. SAX보단 느립니다.
DOM 방식
UTF-8 파싱을 지원하지만 기본적으로 유니코드로 컴파일이 안된다.
UTF-8로 된 파일에서 한글을 읽을 때 MultiByteToWideChar에 CP_UTF8옵션으로 읽을 것.
UTF-16미지원

    • MSXML
DOM 방식.
COM.
SAX도 지원하는듯.
MSXML버젼 때문에 정상적으로 파싱 하지 못하는 경우가 발생할 수 있다. 별도 MSXML 배포버젼이 있지만 일반적으로 유저들은 IE를 설치할 때 같이 배포된 MSXML을 사용하기 때문에 사용자의  IE버젼과 OS버젼에 따라 이런 경우가 발생한다.
이걸로 개발하면 유저들도 닷넷 프레임워크를 필요로 한다. 그런데 요즘엔 XP SP2이상이면 기본으로 깔려 있으니 상관 없을 듯.

SAX방식.
작고 가볍다.
MSXML에 비해 제공되는 기능은 적다. 파싱을 위한 코딩 량이 기존에 비해 커질 수 있다.
SAX방식.
SAX 방식.
utf-16지원.
Apache 프로젝트중 하나.
유니코드 지원 되는 듯.
파싱만 된다. 생성은 안됨.

    • ACEXML
SAX 방식.
utf-16지원.


검색해보니 17메가짜리 XML을 파싱하는데 SAX는 1초 DOM은 62초 넘게 걸렸다고 하네요. DOM은 XML 용량이 크지않고 데이터에 임의 접근이 자주 일어날 때, 내용을 XML 파일로 백업할 때 유용할 듯합니다. 그외 나머지는  SAX방식으로 접근하면 될 듯 하네요.

그나저나 구글 블로거에서 쓰니 영 글 모양새가 이쁘지가 않은...;;

댓글

이 블로그의 인기 게시물

'xxx.exe' 프로그램을 시작할 수 없습니다. 지정된 파일을 찾을 수 없습니다.

goorm IDE에서 node.js 프로젝트로 Hello World Simple Server 만들어 띄워보기

애드센스 수익을 웨스턴 유니온으로 수표대신 현금으로 지급 받아보자.