카테고리 없음

DOM과 SAX

3604 2025. 7. 3. 21:23
728x90

DOMSAX의 역할

SAX(API) : XML 문서를 보다 효율적으로 분석할 수 있도록 하기 위해서 개발

-> 이벤트 기반의 표준API제공, Java에 의해 정의

= 문서 전체구조 정보를 가지지 않음

= XML 문서를 읽거 나가면서 이벤트 발생

=특정 엘리먼트에 대한 이벤트 발생시 처리

= 문서의 부분을 처리할 때 유리

= 데이터 구조 조작에 유리

= 응용프로그램을 최적화 가능

= 효율성이 좋다.

 

 

SAX 파서

SAX의 필요성

장점

SAX 파서는 XML 문서를 순차적으로 처리

메모리에는 현재 처리하는 데이터만 저장

빠르고, 메모리가 절약

큰 데이터 처리도 가능

단점

랜덤 접근 불가

-> 데이터를 읽을 수만 있고 변경은 불가

재사용성 불가

-> 한번 처리된 데이터는 제거되므로 재사용성이 불가

측면이동 불가

-> 순차적인 처리를 하므로 불가

SAX 파서에 의해 XML 문서처리

(1) 이벤트 발생기

- SAX 파서 객체를 이용하여 XML 문서를 파싱하는 과정에서 이벤트를 감지하여 이벤트를 처리기에 전달

- java.xmlSAXParser org.xml.XMLReader가 담당

(2) 이벤트 처리기

- 이벤트 핸들러라는 인터페이스로 구성되며, 이 이벤트는 특정한 이벤트에 대응하는 메소드로 정의되어 있다.

- SAX 2.0 API에는 org.xml.sax 패키지에 ContentHandler, DTDHandler, EntityResolver, Error Handler가 있다.

- org.xml.helper패키지의 Defaulthandle4개의 코어 핸들러 클래스에 포함되는 모든 콜백의 디폴트 구현을 제공

 

SAX프로세싱에 자주 사용되는 클래스

Javax.xml.parsers.SAXParserFactory의 메소드

Javax.xml.parsers.SAXParser의 메소드

- SAXParsers 클래스의 메소드들은 InputStream, URL, 파일, 문자열 등 다양한 소스에서

XML 문서를 파싱하는 클래스이다.

(3) 파싱

(4) 이벤트 핸들러

SAX의 한계점

데이터를 SAX가 주는 순서대로 받는다.

- 파서가 문서를 탐색하는 순서는 통제 할 수 없다.

SAX방식에서는 사전식 정보를 주지 않음

SAX 1.0에는 DTDHandler 인터페이스가 정의 되어 있어도 DTD에 대한 어떤 실제적 정보도 제공하지 못함

읽기 전용

- 문서의 요소들을 조절할 수 없다.

728x90