본문 바로가기

IT/Java

자바에서 XML다루기(1)

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

자바에서 XML다루기(1)


자바에서 XML을 다루기 위해서 제공하는 API는 DOM, SAX, JDOM, StAX로 총 4가지가 존재합니다.

이 중 많이 사용되는 것은 DOM과 SAX입니다. 각 API별 특징은 아래와 같습니다.


1. DOM(Document Object Model)

   object-based(객체기반)으로 트리구조를 이루고 있습니다. XML의 모든 내용을 분석하므로 속도가 느리고

   메모리 사용율이 높습니다. Document 객체를 이용해서 XML을 다루며 트리 구조이기 때문에 해당 tag의 

   value를 가져오기 위해서는  parent, child, root, sibling 등의 관련 메소드를 호출합니다.

   => 주로 XML의 내용을 추가, 삭제 등의 작업 시 사용


2. SAX(Simple API for Xml)

   event-based(이벤트 기반)으로 순차적으로 읽기만 가능합니다. DOM에 비해 속도가 빠르고 메모리 사용량이

   적습니다.

   => 주로 XML을 단순히 read할 때 사용

 

3. JDOM(Java Document Object Model)

   object-based(객체기반)으로 DOM을 Java에 친숙하게 개량하고 DOM,SAX와의 상호 연동을 지원합니다


4. StAX(Streaming API for Xml

   cursor-based(커서 기반)으로 DOM, SAX를 보안한 방법으로 필요할 때 정보를 추출합니다.


즉, 단순히 XML파일을 읽기만 하려면 SAX를 사용하는 것이 편리하며 내용 수정이 들어갈 때는 DOM방식이 효율적이라는 것을 알 수 있습니다.


□ XML 구문 분석 기술 요약    

    ㅁ 장점
    +-------------------------------------------------------------------------------------------------
    |DOM |* 사용 편의성                                                                              
    |        |* 편리한 탐색을 위한 풍부한 API 집합                                             
    |        |* 전체 트리가 메모리로 로드되므로 XML 문서에 대한 임의 액세스 허용
    +---------------------------------------------------------------------------------------
    |SAX  |* 전체 문서가 메모리에 로드되지 않으므로 메모리 소비량 감소            
    |        |* 여러 ContentHandler를 등록할 수 있는 푸시 모델                            
    +---------------------------------------------------------------------------------------
    |StAX |* 편의성과 성능을 위한 두 개의 구문 분석 모델이 포함되어 있음     
    |        |* 애플리케이션이 구문 분석을 제어하므로 여러 입력이 더 쉽게 지원됨
    |        |* 효율적인 데이타 검색을 가능하게 하는 강력한 필터링 기능 제공   
    +---------------------------------------------------------------------------------------
    
    ㅁ 단점
    +---------------------------------------------------------------------------------------
    |DOM |* 한 번에 구문 분석해야 함                                       
    |        |* 전체 트리를 메모리로 로드하는 경우 과도한 부담 발생
    |        |* 객체 유형 바인딩의 경우 일반 DOM 노드가 적합하지 않음           
    |        |  (모든 노드에 대한 객체 작성 필요)                               
    +---------------------------------------------------------------------------------------
    |SAX  |* 내장된 문서 탐색 지원 없음                            
    |        |* XML 문서에 대한 임의 액세스 없음                 
    |        |* XML 수정에 대한 지원 없음                           
    |        |* 이름 공간 범위 지정에 대한 지원 없음             
    +---------------------------------------------------------------------------------------
    |StAX |* 내장된 문서 탐색 지원 없음                           
    |        |* XML 문서에 대한 임의 액세스 없음                
    |        |* XML 수정에 대한 지원 없음                          
    +---------------------------------------------------------------------------------------
        
    ㅁ 가장 적합한 경우
    +---------------------------------------------------------------------------------------
    |DOM |* XML 문서를 수정해야 하거나 XSLT를 위한 애플리케이션            
    |        |  (읽기 전용 XML 애플리케이션에는 사용되지 않음)               
    +---------------------------------------------------------------------------------------
    |SAX  |* XML에서 읽기만 수행하는 애플리케이션                            
    |        |  (XML 문서 조작 또는 수정에는 사용되지 않음)                    
    +---------------------------------------------------------------------------------------
    |StAX |* 스트리밍 모델과 네임 스페이스에 대한 지원이 필요한 애플리케이션
    |        |  (XML 문서 조작 또는 수정에는 사용되지 않음)                     
    +---------------------------------------------------------------------------------------


다음 시간에는 DOM을 이용한 XML다루는 방법(소스)를 보도록 하겠습니다.

'IT > Java' 카테고리의 다른 글

자바에서 XML다루기(2)  (0) 2015.11.13
객체지향언어 및 객체 개념  (0) 2015.11.13
Java Compile 에러 모음  (0) 2015.11.12
이클립스 사용팁 및 단축키 모음  (0) 2015.11.11
[Game]1TO50 PC버젼  (0) 2015.11.09