Parser 의 이해와 Parsing 손계선 강미정 서정은 5 월 25 일 발표자 : 손계선
파서 (Parser) 란 ? Compiler 의 일부 즉, Compiler 나 Interpreter 에서 원시 프로그램을 읽어 들여, 그 문장의 구조를 알아내는 구문 분석 (parsing) 을 행하는 프로그램 파서파서 원시 프로그램의 명령문, 온라인 명령문, HTML 문서 등에서의 Markup Tag 구문을 해석 할 수 있는 단위로 여러 부분으로 분할
파싱 (Parsing) 형태 - DOM & SAX DOM 과 SAX 란 ? - 하나의 API 로서, XML 문서를 구조화 → DOM 이나 SAX 는 XML 문서에 있는 Data 를 효과적으로 다 루기 위해서 필요함. XML 파서의 분류 - DOM : 트리 (Tree) 기반의 파서 - SAX : 이벤트 (Event) 기반의 파서 → DOM 과 SAX 의 차이점은 문서 접근 방식의 차이 : 임의 접근 (DOM) 과 순차 접근 (SAX)
1)DOM (Document Object Model) - 객체 지향 모델 DOM 은 문서 객체 모델의 약어로 HTML 과 XML 문 서를 위한 API(Application Programming Interface) 로서 문서의 물리적 구조와 문서가 접근되고 다루어 지는 방법을 정의 XML 문서를 하나의 Tree 구조로 봄. 파서가 모든 이벤트들을 잡아서 그 결과를 메모리상 에 트리 형태로 만들고 APPLICATION 이 이 결과를 이용하도록 함.
DOM 의 특징 - XML 문서를 메모리상에 올려놓은 다음 DATA 를 찾아 들어가는 방식을 사용한다. - 큰 문서일 경우 무조건 다 읽기 때문에 Load 시간이 걸리거나 메 모리를 낭비하게 된다. - 문서 편집을 할 수 있다. - Data 를 저장되어 있는 순서대로 받는다. DOM 의 목적 ①다양한 환경과 애플리케이션에서 사용할 수 있는 표준적인 프 로그래밍 인터페이스 제공 ②프로그램 또는 스크립트를 통해 HTML 이나 XML 같은 웹 문서 의 내용과 구조 그리고 스타일 정보의 검색 또는 수정이 가능하 도록 해주는 플랫폼 또는 언어에 중립적인 인터페이스
DOM 구조와 원리 - DOM 은 XML 문서에 노드 들의 트리로 표현되는데, 특정 노드의 하위클래스는 요소, 텍스트, 주석이 될 수 있다. → 따라서 DOM 은 트리 구조로서 XML 문서를 다루 게 되는 것이다. 1) DOM 을 이용한 XML 문서변환 - XML 문서를 응용프로그램이 파싱 요청을 하면 XML 파서에 의해 해석한 후 DOM 인터페이스를 이용하여 응용프로그램과 정보 를 서로 전달하여 XML 문서를 조작하도록 함.
2)XML 문서와 DOM 트리구조 ① XML 문서 XML 정복 2004 년 발행 ② DOM 노드 트리 모델링 [ Document ] (NodeList) [Element " 책 "] (NodeList) [Element " 제목 "] (NodeList) [Element " 발행년도 "] (NodeList) [Text "XML 정복 "] (NodeList) [Text "2004 년 발행 "]
DOM 기반 Parser ▪ JAXP : 썬 마이크로시스템의 파서 (Java API for XML Parsing) ▪ XML4J : IBM 의 파서 (XML Parser for Java) ▪ Xerces : 아파치의 파서 (Xerces Java Parser) ▪ msxml : 마이크로소프트 파서
2) SAX (Simple API for XML) - 이벤트 지향 모델 XML 문서를 하나의 긴 문자열 본다. 문자열을 앞에서부터 차례로 읽어가면서 정보를 받아들인다.
SAX 의 특징 - 큰 문서를 효율적으로 분석하기 위해서 사용한다. - 이벤트가 발생하면 그에 해당하는 Data 를 추출하므로 속도가 DOM 에 비해서 빠르다. - 읽기 전용이다. 문서를 편집할 수 없다. - Data 를 SAX 가 주는 순서대로 받는다. 파서가 문서를 탐색하는 순서에 대해서 어떠한 작업도 할 수 없다. - 원하는 요소만 골라서 읽을 수 있다. SAX 의 구조와 원리 - 순차적으로 하나의 엘리먼트를 파싱해서 처리 - 사건중심 프로토콜 이라고 불림
① SAX 를 이용한 문서 변환 - 프로그래머가 일어날 수 있는 이벤트를 설정해 놓고 해당 이벤트가 발생할 때 SAX 가 제어권을 가지고 상황을 처리함 ② XML 문서와 SAX 처리 구조 - SAX Parser 에 의해 각각 이벤트가 발생되는 시점을 SAX interface 가 처리함 - XML 문서에 대해 응용프로그램이 파싱을 요청하면 XML 파서는 SAX 이벤트 핸들러에게 정보를 전달하고 응용프로그램이 이벤트 핸들러 에 맞게 XML 문서를 조작하도록 함
③ SAX 이벤트 발생 시점 예 ) ① ② ③ ④ XML ⑤ ⑥ ⑦홍길동 ⑧ ⑨ ⑩ ⑪ ⑫ ① startDocument Event 호출 ②③④⑦ startElement() Event 호출 ⑥⑨⑩⑪ endElement() Event 호출 ⑤⑧ character Event 호출 ⑫ EndDocument Event 호출
비교 )
DOM API 형태로 파싱하는 모습의 예
- 아파치에서 만든 Crimson 파서를 사용한 예 < 아파치에서 만든 Crimson 파서를 사용하여 DOM 형태로 파싱하기 위한 프로그래밍 소스 >
<결 과><결 과>
- javax.xml.parsers 패키지를 이용한 파싱을 한 예 <javax.xml.parsers 패키지를 이용하여 DOM 형태로 파싱하기 위한 소스와 결과 화면 >
- javax.xml.parsers 패키지를 이용한 파싱을 한 예 <javax.xml.parsers 패키지를 이용하여 DOM 형태로 파싱하기 위한 소스와 결과 화면 >