XML

7.DOM

mangji2 2024. 4. 25. 13:19

■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