2016년 2월 8일 월요일

[기타IT] 파싱

 파이썬 공부를 하다가 파싱에 관한 코드를 보고 파싱이 도대체 무엇인지 궁금해져서 파싱에 대해 알아 봤습니다.

 파서(Parser)란?


Compiler의 일부




 즉, Compiler 나 Interpreter에서 원시 프로그램을 읽어 들여, 그 문장의 구조를 알아내는 구문 분석(parsing)을 행하는 프로그램을 파서라고 합니다.

파싱 형태 - DOM, SAX


DOM과 SAX란?


 하나의 API로서, XML 문서를 구조화 - XML문서에 있는 Data를 효과적으로 다루기 위해 필요합니다. 이번에는 DOM방식에 대해서만 알아보도록 하겠습니다.

XML 파서의 분류

  •  DOM(Document Object Model) : 트리 기반의 파서
  •  SAX(Simple API for XML) : 이벤트 기반의 파서
-> DOM과 SAX 방식의 차이점은 문서 접근 방식의 차이라고 합니다. 즉, DOM은 임의적 접근을 하고 SAX는 순차적 접근을 합니다.

DOM - 객체 지향 모델


 DOM 문서의 물리적 구조와 문서가 접근되고 다루어지는 방법을 정의하는 방식 입니다. XML 문서를 하나의 Tree 구조로 본다는 특징이 있고 파서가 모든 이벤트들을 잡아서 그 결과를 메모리 상에 트리 형태로 만들고 application이 그 결과를 이용하도록 합니다.
 DOM의 특징으로는

1. XML 문서를 메모리에 올려놓고 데이터를 찾아 들어가는 방식을 사용
2. 모든 데이터를 다 읽기 때문에 큰 문서일 경우 로딩 시간이 걸리거나 메모리 낭비를 낭비    하게 됨
3. 문서 편집 가능
4. 데이터를 저장된 순서대로 받음

과 같은 것들이 있습니다.

 그리고 DOM의 목적으로는

1. 다양한 환경과 application에서 사용할 수 있는 표준적 프로그래밍 인터페이스 제공
2. 프로그램 이나 스크립트를 통해 HTML이나 XML과 같은 웹 문서의 내용과 구조 그리고 스타일 정보의 검색이나 수정이 가능하게 해주는 플랫폼 또는 언어에 중립적 인터페이스

가 있습니다.

 DOM의 구조와 원리

 DOM은 XML 문서에 노드들의 트리로 표현되는데, 특정 노드의 하위클래스는 요소, 텍스트, 주석이 될 수 있습니다. 그래서 DOM은 Tree 구조로서 XML문서를 다루게 되는 것입니다. 
 다음은 XML 문서와 DOM 트리구조에 대해 알아보도록 하겠습니다.

 <?xml version="1.0" encoding="euc-kr"?>
   <book>
      <title>파싱에 대하여</title>
      <category>IT</category>
   </book>

위와 같은 XML코드가 있을 경우, 아래와 같이 DOM 노드 트리 모델링을 할 수 있습니다.


 마지막으로 SAX 방식과 DOM 방식의 파싱을 비교해 보도록 하겠습니다.



SAXDOM
접근 방법이벤트 기반트리 기반
장 점메모리 효율, 빠른 속도문서의 임의접근
단 점구조에 대한 접근 곤란, 읽기 전용, 브라우저 지원 안됨메모리 사용량 큼, 속도 느림
적용 분야문서 일부분만 읽을 때, 데이터 변환 시 유효성 처리구조적 접근이 필요한 경우, 문서정보를 쉽게 파악할 때




댓글 없음:

댓글 쓰기