1. 언제 사용하는가?
- 여러 목적으로 XML 문서를 parsing할 필요가 있다.
2. 어떻게 사용하는가?
- 여러 XML parser가 있지만, 가장 쉬운 SAX 방식을 사용한다.
cf. XML parser
- DOM (Document Object Model)
- SAX(Simple API for XML)
- XMLPULL
1) SAX 의 기본
: xml 문서를 읽으면서, tag, value를 만났을 때 event가 발생한다. 이때 해당 event에 대한 처리를 통해 xml 문서를 parsing한다.
2) class 구성
a. entity class 구현 (xml 에서 얻고자 하는 정보들을 변수로 구성)
b. DefaultHandler 를 확장한 class 생성 및 event 에 따른 로직 구현
c. DefaultHandler 를 확장한 class 를 호출하는 class 구현
d. main method를 호출하는 class 구현
3) DefaultHandler 를 확장한 class 생성 및 event 에 따른 로직 구현 방법
a. DefaultHandler 의 API 참고
: http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html
b. event 발생 순서 및 비고
순서 |
method명 |
비고 |
1 |
startDocument() |
Document 시작 |
2 |
startElement() |
tag 시작, tag 명(localName, qName) 과 tag 속성값(attributes.getValue(0))을 가져올 수 있다. |
3 |
character() |
tag 내 value 값을 가져온다. String value = new String(ch, start, length).trim(); * 어떤 tag 의 value 인지 모른다. |
4 |
currentElement() |
startElement() 시작 이후, endElement() 종료 이전 계속 호출된다. |
5 |
endElement() |
tag 종료 |
6 |
endDocument() |
Document 종료 |
c. tag명과 entity를 저장하는 Data 유형으로 Stack 을 사용
Stack : 순서대로 저장(push), 맨 마지막에 저장된 것 조회(peek), 맨 마지막에 저장된 것 조회 후 삭제(pop)
tag가 시작한 순서의 반대로 tag가 종료되기 때문.
4) DefaultHandler 를 확장한 class 를 호출하는 class 구현, main method를 호출하는 class 구현은 Sample Source 참고