SAX 파싱
파싱법은 4가지가 있다. 삭스, 돔, 마샬, 언마샬.
그 중 첫번째가 SAX 파싱이다. 삭스는 한 줄씩 읽어오는 파싱이다.

x.xml
|
<?xml version=”1.0″ encoding=”UTF-8″?> <rt rr=”처음”> <a a1=”일” a2=”이” a3=”삼”></a> <b b1=”하나” b2=”두울” b3=”세엣”></b> </rt>
|
MainClass.java
|
package sax;
import java.io.File;
import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.SAXException; import org.xml.sax.SAXNotRecognizedException; import org.xml.sax.SAXNotSupportedException;
public class MainClass { public static void main(String[] args) { try{ SAXParserFactory spf=SAXParserFactory.newInstance(); //”삭스 파서 팩토리” 객체생성 SAXParser sp=spf.newSAXParser(); //”삭스 파서” 생성 Dhandler handler=new Dhandler(); //”D핸들러”를 new로 메모리 할당 (※디폴트 핸들러를 상속받은 핸들러임) sp.parse(new File(“.\\src\\x.xml”), handler); //(1)파일 경로의 xml을 (2)핸들러 로 파싱. } catch(Exception ex){System.out.println(ex.getMessage());} }
}
|
Dhandler.java
|
package sax;
import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler;
public class Dhandler extends DefaultHandler { @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { System.out.print(“한 줄 읽기! “); System.out.print(“큐네임 “+qName+” : “);
try{ if(qName.equals(“rt”)){ System.out.print(attributes.getValue(“rr”)); } if(qName.equals(“a”)){ System.out.print(attributes.getValue(“a1”)); System.out.print(attributes.getValue(“a2”)); System.out.print(attributes.getValue(“a3”)); } if(qName.equals(“b”)){ System.out.print(attributes.getValue(“b1”)); System.out.print(attributes.getValue(“b2”)); System.out.print(attributes.getValue(“b3”)); } }catch(Exception ex){System.out.println(ex.getMessage());}
System.out.println(” !한 줄 끝”); } }
|
startElement는 메소드는 Element가 하나 발견될 때마다 실행된다.
결과는 아래와 같이 나온다.
|
한 줄 읽기! 큐네임 rt : 처음 !한 줄 끝 한 줄 읽기! 큐네임 a : 일이삼 !한 줄 끝 한 줄 읽기! 큐네임 b : 하나두울세엣 !한 줄 끝
|

