본문 바로가기

Programming etc/XML

XML parsing 하기

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 참고

parsingTest.zip