02-XML_Parser - 이상정

Download Report

Transcript 02-XML_Parser - 이상정

XML Parser
순천향대학교 정보기술공학부
이상정
2002-2 컴퓨터공학응용
XML Parser 개요
Application
XML 문서
XML Parser
 XML Parser
• XML 문서가 XML의 규칙 및 제약을 따르는 지를 검사
• Application에게 XML 문서의 데이터 또는 자료구조를 제공
 Non-Validating Parser
• 문서의 Well-formedness 만을 체크한다.
 Validating Parser
• 문서를 DTD의 구조에 맞는 지 검증한다.
순천향대학교 정보기술공학부 이 상 정
2
2002-2 컴퓨터공학응용
XML Parser 툴
Non-Validating Parser
XP (James Clark)
Sun “Java Project X” TR-2
Oracle XML Parser
IBM XML4j
MSXML
Apache Xerces
Validating Parser
Sun “Java Project X” TR-2
Oracle XML Parser
IBM XML4j
MSXML
Apache Xerces
 각 파서마다 다른 API를 사용하면 개발자들은 다른 파서를
사용할 때마다 그 API를 익혀야 하는 혼란이 발생
 표준 API(SAX, DOM)를 제정하고 파서들이 지원하게 됨
순천향대학교 정보기술공학부 이 상 정
3
2002-2 컴퓨터공학응용
SAX (Simple API for XML)
 자료구조를 만들지 않고 XML 문서를 스캔해 가면서 순차적으로
이벤트를 발생시켜서 XML 문서에 접근할 수 있게 해 주는 API
• DOM이 W3C의 표준인데 반해 SAX는 공식적인 표준은 아니
지만 업계에서 많이 사용됨
• 현재 SAX 2.0이 최신 버전
• http://www.megginson.com/
• 장점
•
•
•
•
입력 파일의 크기에 구애 받지 않고 파싱할 수 있다.
자신의 데이터 구조를 만들기 원할 때 유용하다.
정보의 작은 부분만 원할 때 유용하다.
단순하고 속도가 빠르다.
• 단점
• 문서의 구조 정보에 대해 파악할 수 없다.
• 문서를 생성시키거나 편집하는데 사용할 수 없다.
순천향대학교 정보기술공학부 이 상 정
4
2002-2 컴퓨터공학응용
DOM (Document Object Model)
 XML 문서를 트리 구조의 형태로 access할 수 있게 해 주
는 API
• DOM을 사용해서 XML 문서를 파싱하면 그 XML 문서의 논리적인
구조에 따라 트리 형태의 자료 구조가 만들어지고 DOM API는 트
리에 접근할 수 있는 API들을 제공한다.
• 다양한 Language Binding: Java, JavaScript, ActiveX
• 현재 DOM Level 2가 W3C의 Recommendation임
• http://www.w3.org/DOM/
• 장점
• 문서의 구조에 대한 풍부한 표현력
• XML 문서를 생성 및 조작할 수 있다.
• 단점
• 메모리 사용량이 많다.
• 속도가 느리다.
순천향대학교 정보기술공학부 이 상 정
5
2002-2 컴퓨터공학응용
Apache XML Parser - Xercex
 XML parsers in Java, C++
• with Perl and COM(MS Common Object Model)
bindings
• Fully-validating parsers
• W3C XML and DOM (Level 1 and 2) standards
• SAX (version 2) standard
 http://xml.apache.org/
순천향대학교 정보기술공학부 이 상 정
6
2002-2 컴퓨터공학응용
Xerces-C++
 아파치 프로젝트의 C++ XML 파서
 Unix,Windows 용 소스, 바이너리 제공
 Win32 binary
• Command Line에서 실행
• Bin\Domprint.exe 예제로 VoiceXML문서의 유효
성 검사
 VoiceXML문서도 XML의 서브셋이기 때문에
동일한 XML파서를 사용 테스트
순천향대학교 정보기술공학부 이 상 정
7
2002-2 컴퓨터공학응용
VoiceXML 예제
<?xml version="1.0" encoding="ksc5601"?>
<!DOCTYPE vxml PUBLIC "-//Voicexml 1.0//EN"
"http://www.voicexml.org/voicexml1-0.dtd">
<vxml version="1.0">
<menu>
<prompt>원하시는 서비스를 선택하세요.
1번은 음성사서함관리 2번은 사용자정보관리 3번은 뉴스정보 입니다.
</prompt>
<choice dtmf="1" next="http://vservice.sch.ac.kr/userservice/voice.vxml"/>
<choice dtmf="2" next="http://vservice.sch.ac.kr/userservice/userinfo.vxml"/>
<choice dtmf="3" next="http://vservice.sch.ac.kr/userservice/news.vxml"/>
<noinput>입력 시간이 지났습니다. 다시한번 입력해 주세요</noinput>
<nomatch>잘못 입력하셨습니다. 다시 입력해 주세요.</nomatch>
</menu></vxml>
순천향대학교 정보기술공학부 이 상 정
8
2002-2 컴퓨터공학응용
예제의 대화의 예
-> 사용자 접속
컴퓨터> 원하시는 서비스를 선택하세요.
1번은 음성사서함관리 2번은 사용자정보관리 3번은 뉴스정보 입니다.
->사용자는 DTMF를 이용하여 입력
사용자> (4번을 누름)
컴퓨터> 잘못 입력하셨습니다. 다시 입력해 주세요.
사용자> (3번을 누름)
-> 3번에 해당하는 http://vservice.sch.ac.kr/userservice/news.vxml를
가져와서 계속 다이얼로그 진행
순천향대학교 정보기술공학부 이 상 정
9
2002-2 컴퓨터공학응용
DOMPrint 이용한 검사
순천향대학교 정보기술공학부 이 상 정
10