오늘은 SAX에 대해서 배웠다.
SAX란 XML의 내용을 지가 알아서 Parse해준다 그정도??
XML의 내용을 SAX에 정의된 규칙대로 나눠 준다.
HTML부터 오늘의 XML까지 완전 그로기 상태다.
자 그럼 SAX를 설명??해보겠다.
//BoardHandler는 DefaultHandler를 상속받게된다.
//구현되는 메소드에는 startElement, characters, endElement가 있다.
public class BoardHandler extends DefaultHandler {
private final String BOARDS = "boards";
private final String BOARD = "board";
private final String TITLE = "title";
private final String CONTENT = "content";
private final String REGIST_DATE = "registDate";
private final String READ_COUNT = "readCount"; //각각의 변수에 Element의 이름과 같은 값을 넣어준다.
private String currentElement = ""; //현재의 Element를 담을 변수
private List<Board> boardList = null; //Board형으로 데이터를 담으면 그걸 차례대로 넣을 List
private Board board = null; //Board형으로 데이터를 가져와 담을 Board객체
//시작태그를 만나게 되면 실행되는 메소드.
//시작태그의 이름을 가져온다.
//시작태그의 이름에 맞는 행동들을 써준다.
//태그의 이름은 localName이나 qName으로 넘어온다.
public void startElement(String namespaceURI, String localName, String qName, Attributes atts)
throws SAXException {
if(BOARDS.equals(qName)){
boardList = new ArrayList<Board>();
}
if(BOARD.equals(qName)){
board = new Board();
}
currentElement = qName;
}
//태그이외의 문자를 처리해주는 메소드
//실질적인 데이터를 추출해내는 부분이다.
//알아서 파싱한 문자열을 char형태로 받아 시작 인덱스와 길이만큼 파싱을해 String객체에 넣어준다
//각각의 조건에 맞게 Board안에 넣어준다.
public void characters(char[] ch, int start, int length)
throws SAXException {
String str = new String(ch, start, length);
if(TITLE.equals(currentElement)){
board.setTitle(str);
}
if(CONTENT.equals(currentElement)){
board.setContent(str);
}
if(REGIST_DATE.equals(currentElement)){
board.setRegistDate(str);
}
if(READ_COUNT.equals(currentElement)){
board.setReadCount(str);
}
}
//종료 태그를 만나게 되면 실행되는 메소드
//종료태그를 만날때마다 차곡차고넣어둔다...List에..
//언제까지?? 종료태그의 끝까지...
//그후 XML에서 뽑아온 데이터를 출력해주는 부분까지.
public void endElement(String namespaceURI, String localName, String qName)
throws SAXException {
if(BOARD.equals(qName)){
boardList.add(board);
}
for(int i = 0;i < boardList.size();i++){
Board board = boardList.get(i);
System.out.println(board.getTitle());
System.out.println(board.getContent());
System.out.println(board.getRegistDate());
System.out.println(board.getReadCount());
}
}
}
수업시간 내내.. 그리고 저녁먹고나서까지 이해가 안됐던 SAX..
뭐든 쉽게 쉽게 생각하자...어려운거란 없다...
어렵다 생각하면 끝까지 어려운거고 쉽다고 생각하면 쉬운거다.
쉽다...쉽다...쉽다...쉽다...쩝...그게말처럼 되지않는게 현실...-_-;;ㅋ
'XML' 카테고리의 다른 글
XML and DTD...! (0) | 2009.07.07 |
---|