DOM은 문서 객체 모델의 약어로 HTML과 XML 문서를 위한 API(Application Prog ramming Interface)로서 문서의 물리적 구조와 문서가 접근되고 다루어지는 방법을 정의한다.
DOM은 XML 문서를 하나의 Tree 구조로 본다. Element 가 Element에 포함되어 있는것은, 하위의 Tree 로 인식하고, 동등한 깊이에 있는 것은 형제 Tree 로 인식 하는 형태이다. 파서가 모든 이벤트들을 잡아서 그 결과를 메모리상에 트리 형태로 만들고 APPLICATION이 이 결과를 이용하도록 한다.
- DOM의 특징
▪ XML문서를 메모리상에 올려놓은 다음 DATA를 찾아 들어가는 방식을 사용한다.
▪ 큰 문서일 경우 무조건 다 읽기 때문에 Load 시간이 걸리거나 메모리를 낭비하게
된다.
▪ 문서 편집을 할 수 있다.
▪ Data를 저장되어 있는 순서대로 받는다.
- DOM의 목적
1) 다양한 환경과 애플리케이션에서 사용할 수 있는 표준적인 프로그래밍 인터페이
스 제공한다.
2) 프로그램 또는 스크립트를 통해 HTML이나 XML같은 웹 문서의 내용과 구조 그
리고 스타일 정보의 검색 또는 수정이 가능하도록 해주는 플랫폼 또는 언어에 중립적인 인터페이스이다.
- DOM 구조와 원리
DOM은 XML 문서에 노드 클래스의 하위 클래스 인스턴스로 표현되는 노드들의 트리로 표현되는데, 특정 노드의 하위클래스는 요소, 텍스트, 주석이 될 수 있다. 따라서DOM은 트리 구조로서 XML 문서를 다루게 되는 것이다.
1) DOM을 이용한 XML 문서변환
XML 문서를 응용프로그램이 파싱 요청을 하면 XML 파서에 의해 해석한 후 DOM인터페이스를 이용하여 응용프로그램과 정보를 서로 전달하여 XML문서를 조작하도록 하고 있다.
2) XML 문서와 DOM 트리구조
① XML 문서
<?xml version="1.0" encoding="euc-kr" ?>
<책>
<제목>XML 정목</제목>
<발행년도>2004년 발행</발행년도>
</책>
② DOM 노드 트리 모델링
③ XML 문서에서의 객체
* XML 문서
<?xml version="1.0" encoding="euc-kr" ?>
<책>
<제목>XML 정목</제목>
<발행년도>2004년 발행</발행년도>
</책>
* XML 객체
▪ Documents : 작성된 전체 문서를 대표하는 객체이다.
▪ <책> : 2개의 하위 요소 객체인 <제목>과 <발행년도>를 포함한 루트 객체이다.
▪ <제목> : 다음 요소객체로 <발행년도>를 갖고 "XML 정복"라는 text객체를 소
유함.
▪ XML 정복 : <제목> 객체의 text객체가 된다.
▪ <발행년도> : 이전 요소객체로 <제목>를 갖고 "2004년 발행"이라는 text객체를
소유한다.
▪ 2004년 발행 : <발행년도> 객체의 text객체가 된다.
Ex) 두 번째 child의 값을 얻고 싶으면, "root 아래의 parent 아래의 두 번째 child 노드의 값을 달라"라고 요청하면 "자식2" 라는 값을 반환한다. 노드의 값을 수정할 수 있다. 전체 XML 문서를 메모리에 불러와야 하기 때문에 효율성이 떨어진다.
- DOM 기반 Parser
1) DOM 기반 파서는 DOM API 라는 프로그램 라이브러리를 사용한다. 이 라이브러
리를 이용하면 XML 문서의 테이터를 엑세스하고 변경하기 위해 DOM 트리에 있는
노드를 다룰 수 있다. 여러 언어로 작성되어 있으며 보통 무료로 다운 받을 수 있다.
러 응용 프로그램-인터넷 익스플로러 6(msxml 3.0 기본 내장) 에서 파서를 이미 내
장하고 있다.
2) 대표적인 DOM 기반 파서 (지원버전 : DOM Level 2 SAX 2.0)
▪ JAXP : 썬 마이크로시스템의 파서(Java API for XML Parsing)
http://java.sun.com/xml
▪ XML4J : IBM의 파서(XML Parser for Java)
http://www.alphaworks.ibm.com/tech/xml4j
▪ Xerces : 아파치의 파서(Xerces Java Parser)
http://xml.apache.org/
▪ msxml : 마이크로소프트 파서
http://msdm.microsoft.com/xml
'프로그래밍 언어 > javascript' 카테고리의 다른 글
javascript 객체 (0) | 2016.12.02 |
---|---|
[nodejs] Sublime Text jade highlight을 위한 플러그인 추가 (0) | 2016.07.11 |
HTML 이란 (1) | 2016.01.22 |
SAX (Simple API for XML) - 이벤트 지향 모델 (0) | 2014.01.25 |
파서란?(Parser) (0) | 2014.01.25 |