컴퓨터 공부/XML

[5월 20일 2교시] DOM

려리군 2009. 5. 20. 16:00

DOM

XML문서를 전체 파싱 후 DOM Tree를 생성

읽고 쓸 수 있다.

Random Access가 가능하다.


XML 처리를 위한 자바 API(JAXP)

Sun JDK 1.4의 부분이나 분리된 라이브러리

XML을 위한 자바 코드를 사용하는 독립적인 방법 구현

SAX와 DOM 파서 API와 XSLT 표준 지원

파서와 프로세서의 플러그인 구현 

기본적으로 참조구현 사용(Crimson과 Xalan)


노드 종류

노드

전체 DOM을 위한 주요 데이터 타입은 document tree에서 하나의 노드로 표현된다.

노드 인터페이스를 구현한 모든 객체는 자식을 다루기 위한 방법을 드러내지만 노드를 구현한 모든 객체가 자식을 가지는 것은 아니다.

document

document 트리의 루트, XML 문서를 표현한다.

문서 데이터와 메소드들을 접근하는 방법을 제공한다.

element

XML 문서에서 element를 나타내며 관련된 속성이나 텍스트 노드를 가질 수 있다.

attribute

element 객체 안에서 속성을 표현한다.

text

element나 attribute의 문자 내용을 표현한다.

다른 종류(COMMENT, ENTITY)


공통 DOM 메소드

Node.getNodeType

노드가 속한 타입

예) Node.ELEMENT_NODE

Node.getNodeName()

타입에 의존한 노드의 값. 

예)element의 tag명, text노드는 #text

Node.getFirstChild() 또는 Node.getLastChild()

주어진 노드의 처음 또는 마지막 자식

Node.getNextSibling() 또는 Node.getPreviousSibling()

주어진 노드의 다음 또는 이전 형제 노드

Node.getAttributes()

(만약 element 노드면) 이 노드의 속성을 포함하는 집합이며 그렇지 않으면 null

Node.getNodeValue()

타입에 의존한 이 노드의 값.

예) 속성의 값 그러나 element는 null

Node.getChildNodes()

이 노드의 모든 자식의 집합

Node.getParentNode()

이 노드의 부모 노드


Element.getAttribute(name)

속성 이름에 해당 하는 값

Element.getTagName()

element의 이름

Element.getElementsByTagName()

주어진 태그 이름을 가진 모든 자손 element들의 집합

Element.setAttribute(name,value)

새로운 속성을 추가한다. name을 가진 속성이 이미 element에 있다면 값은 변경된다.


Attr.getValue()

속성 값

Attr.getName()

속성 이름


Document.getdocumentElement()

문서의 루트 엘레먼트의 자식 노드로 직접 접근하도록 한다.

Document.createElement(tagName)

특정 타입의 element를 생성한다.


텍스트 노드

element 안에 텍스트는 element의 자식으로 간주된다.

---------------------

DocumentBuilderFactory

시스템 속성에 의해 결정된 파서의 인스턴스를 생성한다.

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();


DocumentBuilder

XML 문서로부터 DOM 문서 인스턴스를 얻는다.

DocumentBuilder builder = factory.newDocumentBuilder();

document = builder.parse(new File(XML파일이름/경로));


자바 관련 API 

http://java.sun.com/javase/6/docs/api/ 에서 org.w3c.dom 클릭한다.