XML 문서를 처리할 수 있는 방법으로는 DOM과 SAX가 있다.
출처 - novelxml
JAXP(Java API for XML Processing)는 XML을 처리하는 자바 API 중 하나이다. 주로 XML 문서의 유효성 검증과 분석을 위한 인터페이스를 제공한다. 주로 다음 2개의 기본 분석 인터페이스를 제공한다.
JAXP 1.4부터는 3번째 인터페이스를 추가하였다.
- StAX 인터페이스 (JSR 173)
JAXP는 3가지의 파싱 인터페이스 이외에도 XML 문선의 데이터 및 구조를 변환할 수 있는 XSLT 인터페이스도 제공한다. JAXP는 자바 커뮤니터 프로세스의 JSR 5 (JAXP 1.0), JSR 63 (JAXP 1.1 & 1.2), JSR 206 (JAXP 1.3 & 1.4)에 의해 개발되었다. J2SE 1.4 이상에서는 JAXP를 포함하고 있어서 J2SE 5.0에서는 JAXP 1.3을, Java SE 6에서는 JAXP 1.4를 포함하고 있다.
버전 역사
JAXP version | 발표 | 자바 플랫폼 | 중요한 변화 |
---|---|---|---|
JAXP 1.4 | Java SE 6 | JSR 206 | |
JAXP 1.3 | J2SE 5.0, Java EE 5 | JSR 206 | |
JAXP 1.2 | JSR 63 | ||
JAXP 1.1 | JSR 63 | ||
JAXP 1.0 | JSR 5 |
Java API for XML Processing ( JAXP )는 Java 에서 XML 을 처리하는 API 의 하나. XML 문서의 유효성 검증과 구문 분석 을위한 인터페이스 를 제공한다. 다음 두 가지의 기본적인 구문 분석 인터페이스를 갖춘다.
- Document Object Model 의 구문 분석 인터페이스 ( DOM 인터페이스)
- Simple API for XML 의 구문 분석 인터페이스 ( SAX 인터페이스)
JAXP 1.4에서 세 번째 인터페이스가 추가되어있다.
- Streaming API for XML 의 구문 분석 인터페이스 ( StAX 인터페이스, JSR 173)
JAXP는 구문 분석 인터페이스 외에도 XML 문서의 데이터와 구조의 변환을위한 XSLT 인터페이스도 제공하고있다. JAXP는 Java Community Process 에서 JSR 5 (JAXP 1.0), JSR 63 (JAXP 1.1과 1.2), JSR 206 (JAXP 1.3 및 1.4)으로 개발되었다. 2007 년 현재 최신 버전은 1.4. J2SE 1.4 이후는 JAXP 구현을 포함하게되고, J2SE 5.0은 JAXP 1.3 구현을 Java SE 6는 JAXP1.4의 구현을 포함한다.
DOM 인터페이스 [ 편집 ]
아마도 가장 이해하기 쉬운 것이 DOM 인터페이스 것이다. XML 문서 전체를 구문 분석하고 문서의 모든 요소에 해당하는 메모리 내 표현을, Document Object Model (DOM) Level 2 Core Specification 에서 규정 된 모델을 기반으로 클래스 로 구축한다.
DOM 파서 (구문 분석 기기)는 메모리에 Document
표현을 구축 (build)하기 때문에, DocumentBuilder
했다. javax.xml.parsers.DocumentBuilder
는javax.xml.parsers.DocumentBuilderFactory
에 의해 생성된다. DocumentBuilder
는 XML 문서의 모든 노드를 포함한 트리 의org.w3c.dom.Document
인스턴스 를 생성한다. 트리의 각 노드는 org.w3c.dom.Node
인터페이스를 구현하고있다. 노드는 XML 문서의 데이터 형식을 나타내는 다양한 노드 유형이있다. 가장 중요한 노드 유형으로 다음과 같은 것이있다.
- 요소 (element) 노드. 속성 (attribute)을 가지는 경우가있다.
- 텍스트 (text) 노드. 요소의 시작 태그와 종료 태그 사이에 기술 된 텍스트를 나타낸다.
모든 노드 유형 목록은 Java 패키지 org.w3c.dom
의 Javadoc 을 참조하십시오.
SAX 인터페이스 [ 편집 ]
SAX 파서는 SAXParser
라고, javax.xml.parsers.SAXParserFactory
에 의해 생성된다. DOM 파서와 달리, SAX 파서는 메모리에 XML 문서의 표현을 만들지 않기 때문에보다 빠르고 메모리 사용량이 적다. 대신 SAX 파서는 콜백 을 호출, 즉 미리 파서에 전달 놓은org.xml.sax.helpers.DefaultHandler
인스턴스 의 메소드 를 호출하여 XML 문서의 구조를 클라이언트 에게 통지한다.
DefaultHandler
클래스 ContentHandler
, ErrorHandler
, DTDHandler
, EntityResolver
의 각 인터페이스를 구현하고있다. 대부분의 클라이언트는 ContentHandler
인터페이스로 정의 된 메소드를 사용하게된다. 이 방법은 XML 문서의 해당 요소를 SAX 파서가 발견했을 때 호출된다. SAX 인터페이스 중에서 가장 중요한 방법으로 다음과 같은 것이있다.
startDocument ()
과endDocument ()
메소드. XML 문서의 시작과 끝에서 호출된다.startElement ()
andendElement ()
메소드. 요소의 시작 지점과 끝 지점에서 호출된다.characters ()
메서드. 요소의 시작 태그와 종료 태그 사이에있는 텍스트 데이터에서 호출된다.
클라이언트는 DefaultHandler
의 서브 클래스에서이 메소드를 재정의 하고 데이터를 처리한다. 과정에서 데이터를 데이터베이스에 저장하거나 스트림에 내보낼 수도있다.
XSLT 인터페이스 [ 편집 ]
XSLT 는 XML 문서를 다른 형식의 데이터로 변환한다.
'Development > XML' 카테고리의 다른 글
XML, DTD, XSD, XSL 관계 (0) | 2012.02.13 |
---|---|
Markup Language (0) | 2012.01.27 |
XSD(XML Schema Difinition) (0) | 2012.01.18 |
XML 창시자 - 팀 브레이 (0) | 2010.12.14 |
XML 정의 (0) | 2010.11.29 |