90 likes | 188 Views
XML with JAVA. chapter 12 : SAX Ⅰ. 학습목표. SAX 파서의 용도 SAX 파서 객체 생성 이벤트 핸들러 ContentHandler DTDHandler EntityResolver ErrorHandler DefaultHandler. SAX 의 용도. SAX 용도
E N D
chapter 12 : SAX Ⅰ
학습목표 • SAX 파서의 용도 • SAX 파서 객체 생성 • 이벤트 핸들러 • ContentHandler • DTDHandler • EntityResolver • ErrorHandler • DefaultHandler
SAX의 용도 • SAX 용도 • : DOM 과 같이 XML 문서를 해석하는 파서 형태로서 DOM 은 XML 문서를 읽어들여 메모리에 로드하기 때문에 문서가 커질 경우 비효율적이다 • . SAX는 문서 내용을 메모리에 로드 하지 않고 이밴트 핸들러를 이용하므로 훨씬 효율적이다. DTDHandler ContentHandler XML SAX 파서 이벤트 EntityResolver ErrorHandler
SAX 파서 객체 생성 • 파서객체 생성 SAXParserFactory saxpf = SAXParserFactory.newInstance(); SAXParser saxp = saxpf.newSAXParser(); • ContentHandler 마크업이나 문자 데이터를 만났을 때 호출 • 지원메소드 public void startElement(String uri,String localName,String qName,Attributes atts ) uri : 네임 스페이스 uri localName : 네임 스페이스 접두사를 제외한 이름 qName : 네임 스페이스 접두사를 포함한 이름 atts : 속성
이벤트 핸들러 public void characters(char[] ch,int start int length) ch : xml 문서에 있는 char 배열 start : 이벤트가 발생한 문자 시작 위치 length : 문자 길이 Public void stopElement(String uri,String localName,String qName) • ContentHandler 등록 • MyHandler my = new MyHandler(); • xReader.setContentHandler(my); 예제소스(ch12_1.java)
이벤트 핸들러 • DTDHandler • 지원메소드 • Public void notationDecl(String name,String publicId,String systemId) • name : 노테이션 명 • publicId : public 식별자 • systemId : system 식별자 • Public void unparsedEntityDecl(String name,String publicId,String systemId,String notationName) • name : 엔티티 이름 • notationName : 노테이션 명 • DTDHandler 객체 등록 • MyHandler my = new MyHandler(); • xReader.setDTDHandler(my); • 예제참조(ch12_2.java,My2Handler.java,NotationDecl.java,UnparsedEntityDecl.java)
이벤트 핸들러 • EntityResolver 인터페이스 Public InputSource resolveEntity(String publicId,String systemId) 외부 일반 파스드 엔티티를 만났을 때 실행되는 메소드. 예제참조(ch12_3.java,My3Handler.java,ch05_2.dtd,ch05_2_1.dtd,ch05_2.xml) • ErrorHandler 인터페이스 public void fatalError(SAXParserException exception) public void error(SAXParserException exception) public void warning(SAXParserException exception) 예제참조(ch12_4.java,My4Handler.java)
이벤트 핸들러 • DefaultHandler 클래스 ContentHandler,DTDHandler,EntityResolver,ErrorHandler 를 구현한 클래스, 따라서 모든 메서드를 구현할 필요없이 필요한 메서드만 사용할 수 있다. Defaulthandler 등록 saxp.parse(“xml 파일”,DefaultHandler 객체 참조변수) 예제참조(ch12_5.java)