1. SAX 핸들러 구현의 간단화
필요한 메서드만을 오버라이딩 하여 구현할 수 있도록 이 인터페이들 모두 상속하여 각 인터페이스에 정의되어 있는 abstract 메서드들을 오버라이딩한 DefaultHandler 클래스를 사용한다.
2. 특정 요소만 추출하여 XML 문서 작성하는 SAX 예제
3. 특정 속성만 추출하여 XML 문서 작성하는 SAX 예제
출처 : e-campus 강좌 중에서
필요한 메서드만을 오버라이딩 하여 구현할 수 있도록 이 인터페이들 모두 상속하여 각 인터페이스에 정의되어 있는 abstract 메서드들을 오버라이딩한 DefaultHandler 클래스를 사용한다.
2. 특정 요소만 추출하여 XML 문서 작성하는 SAX 예제
import java.io.*; import javax.xml.parsers.*; import org.xml.sax.*; import org.xml.sax.helpers.*; class SAXSample04 { public static void main(String args[]) throws Exception { //SAX를 준비한다 SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser sp = spf.newSAXParser(); //핸들러를 준비한다 SampleHandler04 sh = new SampleHandler04(); //문서를 읽어들인다 sp.parse(new FileInputStream("student.xml"), sh); } } //핸들러 클래스 class SampleHandler04 extends DefaultHandler { //문자열을 준비한다 StringBuffer sb = new StringBuffer(); boolean isPrint = false; //문서의 시작 public void startDocument() { sb.append ("<?xml version=\"1.0\" encoding=\"EUC-KR\" ?>"); sb.append("<초등학생>"); } //문서의 종료 public void endDocument() { sb.append("</초등학생>"); //문자열을 써넣는다 try{ PrintWriter pw = new PrintWriter (new BufferedWriter (new FileWriter("result04.xml"))); pw.println(sb); pw.close(); }catch(Exception e){} } //요소의 시작 public void startElement(String namespaceURI, String localName, String qName, Attributes attrs) { if(qName.equals("이름")){ sb.append("<" + qName + ">"); isPrint = true; } } //요소의 종료 public void endElement(String namespaceURI, String localName, String qName) { if(qName.equals("이름")){ sb.append("</" + qName + ">"); isPrint = false; } } //문자 데이터 public void characters(char[] ch, int start,int length) { String str = new String(ch, start, length); if(str.trim().length() != 0 && isPrint == true){ sb.append(str); } } }
3. 특정 속성만 추출하여 XML 문서 작성하는 SAX 예제
import java.io.*; import javax.xml.parsers.*; import org.xml.sax.*; import org.xml.sax.helpers.*; class SAXSample05 { public static void main(String args[]) throws Exception { //SAX를 준비한다 SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser sp = spf.newSAXParser(); //핸들러를 준비한다 SampleHandler05 sh = new SampleHandler05(); //문서를 읽어들인다 sp.parse(new FileInputStream("student.xml"), sh); } } //핸들러 클래스 class SampleHandler05 extends DefaultHandler { //문자열을 준비한다 StringBuffer sb = new StringBuffer(); //문서의 시작 public void startDocument() { sb.append ("<?xml version=\"1.0\" encoding=\"EUC-KR\" ?>"); sb.append("<초등학생>"); } //문서의 종료 public void endDocument() { sb.append("</초등학생>"); //문자열을 써넣는다 try{ PrintWriter pw = new PrintWriter (new BufferedWriter(new FileWriter("result05.xml"))); pw.println(sb); pw.close(); }catch(Exception e){} } //요소의 시작 public void startElement(String namespaceURI, String localName, String qName, Attributes attrs) { if(qName.equals("이름")) { for(int i=0; i<attrs.getLength(); i++) { sb.append("<" + attrs.getQName(i) + ">"); sb.append(attrs.getValue(i)); sb.append("</" + attrs.getQName(i) + ">"); } } } }
출처 : e-campus 강좌 중에서