자바개발과정/XML

XML과 DOM(성적조회), SAX

경진 2008. 7. 16. 10:21
개인별 성적 조회 프로그램(DOM)

첨부파일


자바스크립트를 이용해 xml파일을 읽어 HTML의 FORM에 출력하는 예제이다.

SAX

SAX(Simple API for XML)의 정의

SAX는 이벤트 기반 API(Application Programming Interface)이며, 주로 문서를 조작하는 프로그램을 개발할 때 사용한다.

SAX는 DOM과 마찬가지로 XML 문서의 생성, 삭제, 수정, 태그 변환 등 다양한 목적으로 개발할 수 있으며, XML 문서 편집기, XML 문서 뷰어, 문서 변환기 등을 다양하게 개발할 수 있다.

DOM은 문서 전체를 메모리에 읽어 들이고 조작하는 방식이며, SAX는 문서를 처음부터 차례로 읽어가면서 처리하는 방식이다. 그래서 DOM을 '트리 기반 API'라고 부르고, SAX를 '이벤트 기반 API'라고 부른다. 즉, DOM은 XML 문서를 트리 구조 형식으로 다루기 때문에 XML 문서 전체를 읽어 들여 조작하는 경우 편리한 API이지만, XML 문서가 커질 경우 그만큼 메모리 소모가 커지는 단점이 있다. 이러한 DOM의 문제점을 극복하기 위해 제안된 API가 바로 SAX이며, XML 문서 전체를 처음부터 끝까지 차례대로 읽어 들이면서 처리하는 구조를 가지고 있다. 따라서 작은 메모리를 가진 시스템에서 XML 문서를 처리할 수 있는 장점이 있다.

SAX 기반 파서

SAX 기반 파서는 SAX API(Application Program Interface)라는 프로그램 라이브러리를 사용한다. DOM 기반 파서와 마찬가지로 일반 프로그래밍 언어(C, C++, JAVA, JavaScript 등)을 사용해서 SAX API를 사용한다.

XML 문서를 다룰 수 있는 SAX API 구성

org.xml.sax 패키지 (배포된 모든 SAX 파서에서 포함하고 있다)
org.xml.sax.ext 패키지 (J2SDK 1.4 이상에 내장한 JAXP가 포함하고 있다)
org.xml.sax.helpers 패키지 (J2SDK 1.4 이상에 내장한 JAXP가 포함하고 있다)
javax.xml.parsers 패키지 (DOM 파서와 SAX 파서 클래스를 포함한다)

SAX 참고 사이트

http://www.saxproject.org (공식 웹 사이트)
http://www.sourceforge.net/projects/sax

첨부파일


XML문서를 SAX 응용 프로그램에 의해 읽어 들이고 이벤트 호출에 의한 문서의 구조를 파악하는 간단한 예제이다.

첨부파일


학생 정보를 정의하는 DTD를 포함한 XML 문서에 대한 네임스페이스 지원 및 문서 유효성 검사를 수행하는 SAXParser 생성 프로그래밍 예제이다.

첨부파일


XML 문서의 속성과 각 요소의 데이터를 추출하여 출력하는 이벤트 핸들러 프로그래밍 예제이다.

첨부파일


XML 문서가 유효한지 여부를 알아보는 프로그램 작성 예제이다.

※ 유효성 체크를 올바르게 하기 위해서는 ErrorHandeler 인터페이스의 메소드를 작성해야 하며, 실행 결과는 XML 문에 따라 다르게 나타난다.

인수값으로 테스트 해보는 xml 파일 (students_error.xml, students_warning.xml)

students_error.xml
XML 문서의 유효성 검사를 실행한 결과를 살펴보기 위해 종료 태그가 없는 문서를 만들었다. 따라서 정형식 문서가 아니고 종료 태그가 없다는 에러가 출력된다.

students_warning.xml
XML 문서는 DTD에서 정의하지 않은 속성을 나타내고 있으며, 이러한 XML 문서에 대하여 유효성 검사를 해보면 정의 되어 있지 않은 속성을 나타내고, 유효한 문서가 아니라고 출력된다.

'자바개발과정 > XML' 카테고리의 다른 글

XML과 데이터베이스  (0) 2008.07.18
XML과 JSP(TLD, web.xml)  (0) 2008.07.17
XML과 SAX  (0) 2008.07.17
XML과 DOM(도서 목록), JAVA 환경변수 설정, BAT파일 생성하기  (0) 2008.07.15
XML과 DOM  (0) 2008.07.14