파서(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 방식의 파싱을 비교해 보도록 하겠습니다.
SAX | DOM | |
접근 방법 | 이벤트 기반 | 트리 기반 |
장 점 | 메모리 효율, 빠른 속도 | 문서의 임의접근 |
단 점 | 구조에 대한 접근 곤란, 읽기 전용, 브라우저 지원 안됨 | 메모리 사용량 큼, 속도 느림 |
적용 분야 | 문서 일부분만 읽을 때, 데이터 변환 시 유효성 처리 | 구조적 접근이 필요한 경우, 문서정보를 쉽게 파악할 때 |
댓글 없음:
댓글 쓰기