본문 바로가기
IT/자바

[XML] DOM, SAX

by 김보리 2022. 5. 8.
728x90
반응형

XML(eXtensible Markup Language) : W3C에서 개발된 다목적 Markup 언어

 

XML 기본 개념

  • 구조적인 데이터를 위한 것
  • 다소 HTML같이 보임
  • 텍스트이며, 읽히는 것만을 뜻하지 않음
  • 크기가 커짐
  • 기술의 집합
  • 새로운 기술이 아니라 발전한 기술
  • HTML에서 XHTML로 이끌음
  • 모듈식
  • RDF와 시맨틱 웹의 토대
  • 라이선스 제약이 없으며, 플랫폼이 독립적이고 많은 지원이 있음

 

XML 파싱하는 방법

 

1. DOM(DOCUMENT Object Model)

  • XML문서를 읽어들이는 중간에는 아무일도 일어나지 않고 XML 문서의 모든 element, text, attribute 등에 대해 객체를 만듦
  • 이후 Document 객체를 리턴하며 그 때부터 작업을 할 수 있음

   방식

  • 메모리에 모두 로드를 한 후 파싱
  • 메모리에 모두 로드되어 있기 때문에 검색, 수정 등 방식이 빠르고 SAX보다 파싱하기 용이
  • DOM 방식은 메모리에 올려둔 후 처리를 하기 때문에 메모리에 올리는 과정이 별도로 들어감
  •  XML을 여러번 핸들링 해야 할 경우, DOM 방식은 SAX보다 확실히 유리함
  • 몇 번이고 원하는 요소 정보를 바로 찾아가 추가 및 수정할 수 있는 수단

 

  DOM 방식을 사용해야 할 경우

  • XML 문서를 수정하는 등의 추가적인 핸들링 작업이 들어갈 경우
  • XML 문서의 구조가 복잡할 경우
  • 문서의 수정, 검색 등이 존재할 경우

 

2. SAX(Simple API for XML) : XML 문서를 하나의 긴 문자열로 간주

  • 문자열을 앞에서부터 차례로 읽어가면서 요소, 속성이 인식될 때마다 Event 발생
  • 각각의 이벤트가 발생될 때마다 수행하고자 하는 기능을 이벤트 핸들러 기술을 이용하여 구현(콜백 메커니즘)

 

  방식

  • 라인을 하나하나 순차적으로 읽어가며 파싱을 수행
  • DOM처럼 전체를 메모리에 올리지 않기 때문에 메모리의 사용량이 적으며, 별도의 작업이 추가적으로 들어가지 않음
  • 한번 읽고나서 끝(1회성)

 

  SAX 방식을 사용해야 할 경우

  • 단순히 데이터를 파싱하여, 화면에 View 하는 경우
  • 대용량의 데이터로 인해서 메모리에 문제가 발생할 경우
  • 단순한 설정을 읽는 경우
  • Config 형태의 값을 읽거나, 데이터를 뿌리는 정도의 핸들링 작업인 경우


728x90
반응형

'IT > 자바' 카테고리의 다른 글

[이클립스] workspace UTF-8 설정  (0) 2022.06.13
svn 업데이트 버전 가져오는 방법  (0) 2021.12.02
svn 연동 방법  (0) 2021.12.02
자바 정리 - 컬렉션 프레임워크  (0) 2021.11.30
자바 정리 - Wrapper(포장) 클래스  (0) 2021.11.30

댓글