Download presentation
Presentation is loading. Please wait.
1
DOM (Document Object Model)
6조 남채훈 장희균
2
목차 DOM 개요 DOM 목적 DOM 장점, 단점 DOM 구조 DOM 인터페이스 및 예제
3
DOM 개요 DOM(Document Object Model) 정의 DOM의 특징 객체 지향 모델로 구조화된 문서를 표현
플랫폼/ 언어 중립적 W3C에 의해 표준화 DOM의 특징 객체 모델 기반 API 노드(node) 단위로 데이터 처리 문서의 구조 정보와 내용을 객체로 이용 메모리 적재 방식
4
DOM 목적 XML DOM의 목적 XML 문서를 생성, 검색, XML 문서가 메모리 상주해 있는 동안 일부 수정, 추가, 삭제 할 수 있는 인터페이스 제공 XML 문서가 메모리상에 올라갈 때 문서에 대한 논리적인 View를 제공 XPath 처럼 노드로 구성된 일종의 트리 모양을 가진 계층구조로 XML 문서 표현
5
DOM 장점, 단점 DOM 장점 DOM 단점 XML 문서 조작을 위한 인터페이스
공통 인터페이스 공유를 통해 프로그래머 생산성 향상 DOM 단점 큰 규모의 XML 문서를 다루는 데는 비효율적 대안으로 SAX (Simple API for XML)
6
DOM 구조 <?xml version="1.0" encoding="utf-8" ?> <books>
<author>Carson</author> <price format="dollar">31.95</price> <pubdate>05/01/2001</pubdate> </book> <pubinfo> <publisher>MSPress</publisher> <state>WA</state> </pubinfo> </books>
7
DOM 구조 XML 데이터를 DOM 구조로 읽어 올 때 문서 구조 그림
8
DOM Interface - Node DOM 객체가 만들어지는 기본 인터페이스 프로퍼티 타입 설명 nodeName
DOMString(Read) 노드의 이름, 타입에 따라 다른 이름 반환 nodeValue DOMString 노드의 값, 타입에 따라 다른 값을 반환 nodeType unsingned short (Read) 노드의 타입 parentNode Node(Read) 이 노드의 부모 노드 childNode NodeList(Read) 이 노드의 자식 노드를 포함하는 NodeList 자식노드가 없으면 빈 NodeList 반환 firstChild 이 노드의 첫 번째 자식 노드 lastChild 이 노드의 마지막 자식 노드 previousSibling 이 노드의 바로 앞 노드 nextSibling 이 노드의 바로 뒤 노드
9
DOM Interface - Node 프로퍼티 타입 설명 attributes NamedNodeMap (Read)
ownerDocument DOMStirng(Read) 이 노드가 속한 도큐먼트 namespaceURI DOMString(Read) 이 노드의 네임스페이스 URI prefix DOMString 네임스페이스 접두어 localName 노드의 Qname 부분 이름을 반환
10
DOM Interface - Node 함수 설명 존재하는 refChild 앞에 newChild를 삽입
Node insertBefore(Node newChild, Node refChild) 존재하는 refChild 앞에 newChild를 삽입 refChild가 NULL이면 리스트 끝에 삽입 Node replaceChild(Node newChild, Node oldChild) oldChild를 newChild로 대체 oldChild를 반환 Node removeChild(Node oldChild) 리스트에서 oldChild를 제거하고 그것을 반환 Node appendChild(Node newChild) 리스트 끝에 newChild를 추가하고 그것을 반환 boolean hasChildNodes() 노드에 자식이 있으면 true, 없으면 false Node cloneNode(boolean deep) 이 노드를 반환, 파라미터가 true이면 노드의 하위 트리까지 복사하고 그렇지 않으면 그 노드만 복사 void normlize() 복수의 근접한 Text 자식 노드가 있으면 그것을 합침 boolean supports(DOMString feature, DOMString version) DOM 구현체가 넘겨받은 특징을 지원하는지 여부 검사, 지원하면 true, 아니면 false
11
DOM Interface – Document
전체 XML 문서를 표현 Node 인터페이스 상속 프로퍼티 타입 설명 DocType DocumentType(Read) 이 문서와 연결된 문서 형식을 표현하는 Document Type 객체 반환 정의된 문서 형식이 없다면 NULL반환 Implementation DOMImplementation (Read) 이 문서에 사용된 DOMImplementation 객체 DocumentElement Element(Read) 이 문서의 루트 엘리먼트
12
DOM Interface - Document
함수 설명 Element createElement(DOMString tagName) 지정된 이름으로 엘리먼트를 생성 DocumentFragment createDocumentFragment() 빈 DocumentFragment 객체를 생성 Text create TextNode(DOMString data) data에 텍스트를 포함하는 Text 노드를 생성 Comment createComment(DOMString data) data에 텍스트를 포함하는 Comment 노드를 생성 CDATASection createCDATASection(DOMString data) data에 텍스트를 포함하는 CDATASection 노드를 생성 ProcessingInstruction createProcessingInstruction(DOMString target, DOMString data) 지정된 target과 data를 가지는 ProcessingInstruction 노드를 생성 Attr createAttribute(DOMString name) 지정된 name을 가지는 어트리뷰트를 생성 EntityReference createEntityReference(DOMString name) 지정된 name으로 엔티티 참조 생성
13
DOM Interface - Document
함수 설명 NodeList getElementsByTagName(DOMStringtagname) 문서에서 이 tagname을 가진 모든 엘리먼트를 NodeList로 반환, 엘리멘트 문서에 있는 순서로 반환 Node importNode(Node importedNode, boolean deep) 다른 문서에서 importedNode를 가져옴. 이전 문서에서 원래 노드 지원하지 않고 복제 Element createElementNS(DOMStringanmespaceURI, DOMStringqualifiedName) 지정된 네임스페이스와 Qname로 엘리먼트를 생성 Attr createAttributeNS(DOMStringnamespaceURI, DOMStringqualifiedName) 지정된 네임스페이스와 Qname로 어트리뷰트를 생성 NodeList getElementsByTagNameNS(DOMString namespaceURI, DOMString localName) 지정된 부분 이름을 가지고 namespaceURI에 의해서 정해지는 네임스페이스 안에 있는 모든 엘리먼트 NodeList로 반환 Element getElementByld(DOMStringelementID) elementID를 가진 엘리먼트를 반환
14
DOM Interface - DOMImplementation
특정 문서에 종속적이지 않은 어떤 문서라도 사용할 수 있는 함수 제공 함수 설명 boolean hasFeature(DOMString feature, DOMString version) 이 DOM 구현체가 요청 받은 feature를 지원하는지 여부를 반환 version은 테스트할 이 특징의 버전 DocumentType createDocumentType(DOMString qualifiedName, DOMString publicID, DOMString systemID, DOMString internalSubset) 지정된 어트리뷰트를 가지고 Document Type 객체를 만듬 Document createDocument(DOMString namespaceURI, DOMString qulifiedName, DocumentType doctype) 지정된 qualifiedName을 가지고 Document 객체를 만듬
15
DOM Interface - NodeList
인덱스로 접근이 가능한 노드 그룹을 포함 프로퍼티 타입 설명 Length unsigned long(Read) 리스트에 포함된 노드의 수. 유요 숫자는 0 부터 length-1까지 함수 설명 Node item(unsigned long index) 인덱스에 해당하는 노드를 반환. 인덱스가 길이와 같거나 더 크면 NULL을 반환
16
DOM Interface - Element
Node 인터페이스에서 상속 프로퍼티 타입 설명 agName DOMString(Read) 엘리먼트 이름 함수 설명 OMString getAttribute(DOMString name) 지정된 name으로 어트리뷰트 값을 반환, 어트리뷰트가 값을 가지고 있지 않으면 빈 문자열 반환 void setAttribute(DOMString name, DOMString value) 특정 어트리뷰트에 새로운 값 할당. 해당 어트리뷰트가 존재하지 않으면 새롭게 생성 void removeAttribute(DOMString name) 어트리뷰트 제거, 어트리뷰트가 기본값을 가지고 있으면 이 기본 값을 가진 동일 어트리뷰트로 대체 void getAttributeNode(DOMString name) name을 가진 Attr 노드를 반환, 어트리뷰트가 존재 하지 않으면 NULL 반환
17
DOM Interface - Element
함수 설명 Attr setAttributeNode (Attr newAttr) 새로운 어트리뷰트 노드 추가. 동일한 이름을 가진 것이 이미 있으면 치환 Attr removeAttributeNode(Attr oldAttr) 지정한 Attr노드를 제거하고 반환 NodeList getElementsByTagName(DOMString name) 주어진 노드 이름을 가진 모든 자손들을 NodeList로 반환 DOMString getAttributeNS(DOMString namespaceURI, DOMString localName) 지정된 어트리뷰트 값을 반환, 어트리뷰트가 지정되지 않거나 값이 없으면 빈 문자열을 반환 void setAttributeNS(DOMString namespaceURI, DOMStirng qualifiedName, DOMString value) 지정된 어트리뷰트에 새로운 값을 할당 void removeAttributeNS(DOMString namespaceURI, DOMString localName) 지정된 어트리뷰트 제거 Attr getAttributeNodeNS(DOMString namespaceURI, DOMString locarName) 지정된 어트리뷰트를 가진 Attr 노드를 반환 Attr setAttributeNodeNS(Attr newAttr) 리스트에 Attr 노드를 추가
18
DOM Interface - DNamedNodeMap
노드의 집합을 순서 없이 제공 노드들은 이름으로 추출 가능 프로퍼티 타입 설명 length unsigned long(Read) 이 맵에 있는 노드의 개수 함수 설명 Node getNamedItem(DOMString name) 지정된 name을 nodeName으로 가진 Node를 반환 Node setNameItem(Node arg) arg 파라미터는 추가될 Node 객체. nodeName 프로퍼티가 이름을 위해 사용 Node removeNamedItem(DOMStirng name) 지정된 이름을 가진 Node가 제거되고 그것을 반환 Node item(unsigned long index) 지정된 인덱스를 가진 노드 반환 Node setNamedItmeNS(Node arg) arg 파라메터는 추가될 Node 객체
19
DOM Interface - Attr Attribute를 다루는 데 필요한 프로퍼티 제공 Node 인터페이스 상속 프로퍼티
타입 설명 name DOMStirng(Read) 어트리뷰트 이름 specified boolean(Read) 어트리뷰트가 지정되었는지 여부를 알려줌 value DOMString 어트리뷰트 값 owerElement Element(Read) 어트리뷰트가 속한 엘리먼트를 표현
20
DOM Interface - CharacterData
문자 데이터를 다루는 데 필요한 프로퍼티, 함수 제공 Node 인터페이스 상속 프로퍼티 타입 설명 Data DOMString CharacterData 노드의 텍스트 length Unsigned long(Read) 이 노드에 있는 문자 수 함수 설명 DOMString subStringData(unsigned long offset, unsigned long count) offset으로 시작하는 부분의 문자열을 반환, count만큼 문자열 반환 void appendData(DOMString arg) 문자열 뒤에 arg를 붙임 void insertData(unsigned long offset, unsigned long count) 문자열의 가운데 offset으로 시작하는 부분에 arg 문자열 삽입 void deleteData(unsigned long offset, unsigned long count) offser부터 문자열 부분을 제거, count만큼 문자열 제거
21
DOM Interface - Text 텍스트 노드를 다루는 데 필요한 함수 제공 CharacterData 인터페이스를 상속
설명 Text splitText(unsigned long offset) 하나의 Text노드를 인접한 두 개의 Text 노드로 나눔 offset까지 첫 번째 노드, 그 이후가 두 번째 노드
22
DOM 예제 자식 노드 탐색하기
23
DOM 예제 노드 추가하기
24
DOM 예제 Attribute 추가 및 삭제
25
DOM 예제 DOM Exception 예제
Similar presentations