■HTML 문서 처리 과정(웹 브라우저)
1. 웹 서버 -> HTML 문서 다운로드
2.웹 브라우저 -> HTML parser (문서 해석 프로그램) :해석 지시
3.HTML parser -> 웹 브라우저 :해석된 내용 전달
4.디스플레이 ??
■ XML 문서 처리 이해
:XML 문서 처리 과정(XML 응용 프로그램)
●XML Parser
- xml 문서에 대한 parsing 수행
- 특정 언어의 문장을 분석하여 구성요소들의 문법적 관계를 해석
-해석 결과를 응용 프로그램이 이용할 수 있도록 메모리 내 구조 생성
-xml 응용 프로그램 -> xml parser의 parsing 결과를 이용
※ 파싱(Parsing)이란 코드나 텍스트 등의 일련의 기호를 형식적인 문법의 규칙에 따라 분석하는 과정
:xml parser의 종류
.DOM Parser
-xml 문서 해석 -> 메모리에 트리 구조 생성 -> 생성 트리 이용하여 data 검색,수정,삭제 실행
.SAX Parser
-xml 문서 해석 과정에서 다양한 event 발생
-event는 응용 program에서 구현한 이벤트 처리기에 의해 처리
■ DOM 개요
:DOM (Document Object Model)
DOM(문서 개체 모델)은 웹 브라우저나 스크립트와 같은 프로그램이 웹 문서와 상호 작용하는 방법입니다
1.xml이나 html 문서 접근,조작하기 위한 표준 방법을 정의
- program이나 script가 동적으로 문서 내용,구조,형식에 접근,수정 가능하게 해주는 플랫폼
2.문서 구성요소에 대한 객체,속성을 정의 & 그것들을 접근하는 수단을 정의
-xml parser가 xml 문서에 대해 생성해야 하는 객체들의 타입을 정의
-문서 구성요소들을 접근하고 조작하기 위해 사용할 수 있는 표준 응용 programing 인터페이스(API)정의
-API 이용하여 문서(DOM tree)에 속한 엘리먼트,속성,텍스트 등을 검색,수정,삭제,생성 가능
3.DOM을 이용하여 XML Parser에 독립적인 응용 프로그램 개발 가능
무슨 뜻 ? 별도의 파싱 도구 없이 DOM을 통해 XML 데이터를 처리하는 코드를 직접 작성하는 것을 의미
즉, parser는 사용하지만 dom api자체에서 문서를 해석&처리 분석 기능 내장되어 있어 독립성 있다
:DOM을 이용한 XML 문서의 접근 및 처리

1. xml문서를 읽어 들임
2. parser는 xml 문서를 해석하고 문서 트리 구조 생성
3. DOM API를 사용하여 xml 문서의 구성 요소를 접근&변경
4. 변경된 문서 구조를 새로운 xml 파일로 저장
:DOM Tree
-xml 문서를 트리 구조로 표현 가능
:DOM tree는 Node 타입의 객체들로 구성
-xml 문서와 그것에 포함된 모든 구성요소들에 대해 노드 객체 생성
-노드 종류
>문서 노드 : 전체 xml 문서를 나타냄
>엘리먼트 노드 : xml 엘리먼트를 나타냄
>속성 노드 : xml 엘리먼트에 속한 속성을 나타냄
>텍스트 노드 : xml 엘리먼트의 텍스트를 나타냄
>주석 노드 : xml 문서 내의 주석을 나타냄
:노드들 간의 관계
-부모-자식 관계,형제 관계
-최상위 노드 : 루트노드
-루트 제외 모든 노드는 하나의 부모노드 가짐
-노드는 하나 이상의 자식 노드 가짐 -> 모든 자식노드 집합,첫번째 자식노드,마지막 자식 노드 조회 가능
-같은 부모 노드 갖는 노드들을 형제노드라 함
:메모리에 대한 고려
-DOM은 XML 문서에 대한 메모리 내 표현으로 객체들의 트리를 생성
> XML 문서 파일 자체의 크깁다 훨씬 더 많은 메모리 공간이 필요할 수 있음
-크기가 큰 XML 문서 or 많은 xml 문서 동시 처리 시 시스템 부하 크게 증가 ::: 대안 -> SAX
※ XML 문서의 각 요소, 속성 및 텍스트 노드는 메모리의 개체에 해당합니다. 이 메모리 내 표현을 통해 프로그래머는 JavaScript, Java, Python 등과 같은 프로그래밍 언어를 사용하여 XML 문서에서 데이터를 쉽게 탐색, 조작 및 추출할 수 있습니다.
그니까 dom을 이용 -> xml 문서를 메모리의 개체로 만듦 ->이 메모리 표현 통해 프로그래머가 프로그래밍 언어로 xml 문서에서 data
조작&탐색 가능하게 함
:DOM Core Interfaces
-DOM은 노드 접근 위한 interface 집합을 정의 -> 최상위 interface는 node || 최상위 노드는 document
-DOM 구현 ? XML 문서 -> node객체들의 계층으로 표현한 트리 구조
<종류>
1.Fundamental interfaces (기본 인터페이스)
-Node : 모든 인터페이스들의 부모 인터페이스로, 모든 인터페이스가 공통적으로 갖는 메소드들이 정의되어 있음
-Document : DOM 트리의 최상위 노드, XML 문서 자체를 나타내는 인터페이스 || 동적으로 다른 타입의 노드 생성
2.Extended interfaces

:Inheritance vs Flattened views
-Interitance || 상속통해 인터페이스들을 계층적으로 정의
-Flattened views || dom 트리에 포함된 모든 객체는 node 객체임 , 형 변환 없이 node 인페 통해 모든 종류 객체 접근 가능
-API 중복성
:JAXP (java API for xml processing)
-xml 문서 처리를 위한 표준 class library
<dom parser 관련 추상 클래스>
-DocumentBuilderFactory : parser 생성 공장
-DocumentBuilder : parser 객체 만듦
-SAXParserFactory
-SAXParser
<코드 작성 예시>
//dom parser 생성
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//DOM parser 생성
- DocumentBuilder parser = factory.newDocumentBuilder();
//xml 문서의 parsing : parse() 사용
- public Document parse();
//xml 문서 parsing 후 루트 엘리먼트 객체 참조
-Document document = builder.parse();
-Element eRoot = document.getDocumentElement();//루트 엘리먼트 참조
:Node interface
-dom에서 가장 기본이 되는 인터페이스
-특정 노드에 대한 정보를 얻음
-dom 트리에 노드 추가,삭제,변경,노드들을 순회할 수 있음
<속성>
-
'XML' 카테고리의 다른 글
| 6.XML Schema (0) | 2024.04.13 |
|---|---|
| 5.XML Namespaces (0) | 2024.04.12 |
| 4.DTD를 이용한 문서 구조 설계 (0) | 2024.03.31 |
| XML (0) | 2024.03.29 |