프로그래밍 언어/javascript

SAX (Simple API for XML) - 이벤트 지향 모델

벌게진눈 2014. 1. 25. 21:40
반응형

SAXXML를 위한 Simple API의 표준으로 XML 문서를 처리하기 위해 DOM 대신

사용할 수 있는 대안이다. DOM에 비해 단순한 인터페이스이며, 처리해야 할 파일이 많거나 매우 큰 경우에 적합하지만 데이터 내용을 조작할 수 있는 기능은 상대적으로 적. SAXXML 문서를 하나의 긴 문자열 본다. 문자열을 앞에서부터 차례로 읽어가면서 정보를 받아들인다. 문자열을 읽으면서 계속 event를 발생시키고, 프로그래머는 이런 event 에 알맞 프로그램을 작성해 준다. 문서를 훑어 내려가면서 읽기 때문에 효율적이다. DOM 보다는 사용이 어렵고, Data의 수정이 불가능하다.



- SAX의 특징

큰 문서를 효율적으로 분석하기 위해서 사용한다.

이벤트가 발생하면 그에 해당하는 Data를 추출하므로

속도가 DOM에 비해서 빠르다.

읽기 전용이다. 문서를 편집할 수 없다.

DataSAX가 주는 순서대로 받는다. 파서가 문서를 탐색하는 순서에 대해서 어

떠한 작업도 할 수 없다.

원하는 요소만 골라서 읽을 수 있다.

 

- SAX의 구조와 원리

SAX는 순차적으로 하나의 엘리먼트를 파싱해서 처리한다. 이때 트리 형태로 구성하는 과정은 생략하므로 SAX를 순차접근 프로토콜이라 한다. 또한 사건중심 프로토콜이라고 불리는데, 이는 XML 핸들러가 SAX 파서에 자신을 등록하고 새로운 XML태그가 발견될 때마다 Call-back 메소드를 통해 XML 핸들러에게 알려주는 방법을 쓰고 있기 때문이다.

1) SAX를 이용한 문서 변환

SAX는 이벤트 중심의 인터페이스이므로 프로그래머가 일어날 수 있는 이벤트를 설

정해 놓고 해당 이벤트가 발생할 때 SAX가 제어권을 가지고 상황을 처리한다.

2) XML 문서와 SAX 처리 구조

SAX에 의한 XML 문서처리는 SAX Parser에 의해 각각 이벤트가 발생되는 시점을

SAX interface가 처리한다. 그리고 XML 문서에 대해 응용프로그램이 파싱을 요청하XML 파서는 SAX 이벤트 핸들러에게 정보를 전달하고 응용프로그램이 이벤트 핸들러에 맞게 XML 문서를 조작하도록 하고 있다.

3) SAX 이벤트 발생 시점

XML 문서에서 이벤트가 각각 발생되는 시점을 번호로 표시하였는데 순서대로 순차적으로 이벤트가 발생하게 된다.

<?xml version="1.0" encoding="EUC-KR"?>

<문헌정보>

<>

<제목> XML </제목>

<저자> 홍길동 </저자>

</>

</문헌정보>

 

startDocument Event 호출

②③④⑦ startElement() Event 호출

⑥⑨⑩⑪ endElement() Event 호출

⑤⑧ character Event 호출

EndDocument Event 호출

반응형