The Cricket Location

Download Report

Transcript The Cricket Location

XML 소개 및
DOM, JDOM을 이용한 XML 파싱
강미란([email protected])
Cyber-Infrastructure Research Lab
Konkuk University
XML이란?
• XML(eXtensible Markup Language)
– 문서 표준을 위한 표준 Markup 언어
• Markup?
– 문서의 논리적인 구조와 내용 기술을 위해 사용
– SGML, HTML, XML 등이 대표적인 Markup 언어들
– ‘<‘ 와 ‘>’로 둘러싸인 tag들을 의미
• HTML과 XML의 차이점
–
–
–
–
확장성
HTML tag들은 문서를 화면에 보여주기 위한 방법
XML tag들은 문서의 구조 혹은 데이터의 의미를 표현
영문의 대,소문자의 구분 여부
XML 문서 구조
<?xml version="1.0"?>
XML 선언
<stock_quotes
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xsi:noNamespaceSchemaLocation='stock_quote.xsd'>
Schema 선언
(생략가능)
<stock_quote>
<symbol>EDS</symbol>
<when><date>2002-6-21</date><time>13:33</time></when>
<price type="ask" value="32.32"/>
<price type="open" value="32.8"/>
<price type="dayhigh" value="33.1"/>
<price type="daylow" value="32.16"/>
<change>+0.239</change><volume>67552600</volume>
</stock_quote>
</stock_quotes>
XML
문서 내용
XML 문서 구조
stockquote.xml
<?xml version="1.0"?>
<stock_quotes
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xsi:noNamespaceSchemaLocation='stock_quote.xsd'>
<stock_quote>
<symbol>EDS</symbol>
<when><date>2002-6-21</date><time>13:33</time></when>
<price type="ask" value="32.32"/>
<price type="open" value="32.8"/>
<price type="dayhigh" value="33.1"/>
<price type="daylow" value="32.16"/>
<change>+0.239</change><volume>67552600</volume>
</stock_quote>
</stock_quotes>
XML 선언부분
<?xml version=“1.0” encoding=“utf-8” standalong=“yes”?>
• Version
– 사용되는 XML 버전을 반드시 명시
• Encoding
– 데이터 인코딩에 사용되는 문자 세트 기술
• Standalong
– 외부 엔티티나 외부 데이터 타입을 사용하는지 여부 기술
– 외부 엔티티를 사용하지 않으면 “yes”
XML 선언부분
• 용어 정리
– well-formed : XML 문법 사항을 지킨 문서
– valid : XML 문서가 잘 정의되어 있으면서, 문서 내용이 DTD나
XML Schema 규칙에 맞게 작성된 문서
– entity: XML에서 정보의 단위
– Element/태그/속성
시작태그
<stock_quote>
<price type="daylow" value="32.16"/>
Element
<change>+0.239</change>
</stock_quote>
끝 태그
내용
속성
DTD 선언부분
• DTD (Document Type Definition)
– XML 문서의 구조
– XML 문서에서 사용할 수 있는 원소, 속성, 엔티티 등을 정의
– XML 문서는 DTD를 사용할 수 있거나, 무시 할 수 있음
• DTD의 필요성
– 문서의 형태를 정형화된 방법으로 선언 – 표준화
– 문서 내용이 올바른 구조로 되어 있는지 검사 가능
– XML 문서에서 꼭 필요한 원소와 속성을 반드시 기술하도록 만들 수 있
음
– 속성에 디폴트 값을 부여
<!DOCTYPE forexml SYSTEM "http://weather.unisys.com/xml/forexml.dtd">
외부 파일로 DTD를 선언
[ <!ENTITY …>
<!ATTLIST …>
<!ENTITY .. > ]
내부파일로 DTD를 선언
DTD 선언 요소
• DTD 선언의 요소들
– 내부 DTD + 외부 DTD 파일 참조 사용 가능
• 외부 DTD 선언의 내용을 재정의 하거나 추가 가능
DTD 선언
원소선언
주석
<!-주석부분
-->
<!ELEMENT
data
(#PCDATA)
>
속성선언
<!ATTLIST
date start
CDTA>
조건부 섹션
<![INCLUDE[
....
]]>
엔티티 선언
<!ENTITY
greeting
"Hello">
노테이션 명령
<!NOTATION GIF
SYSTEM "C:\
viewer.exe"
처리 명령어
<?applicaion
data ?>
XML 문서 내용
• XML 문서 내용에는 실제 문서의 내용이 기술
– 원소(element) : 태그와 문서 내용을 기술
– 속성(attribute) : 원소에 포함되어서 원소에 대한 메타 정보를 기
술
– 주석(comment) : 문서의 주석을 기술
– 처리 명령어(processing instruction)
– 엔티티 참조(entity reference) : 엔티티를 참조해서 사용
– CDATA 섹션(CDATA Section) : <, &, ? 등의 문자를 포함하는 데
이터를 편리하게 기술하기 위해서 사용
XML 문서 요서
• XML 문서 요소들
– XML 문서에는 오직 하나의 루트 원소가 존재.
Document
Document
Element
Element
(Attribute)
(Attribute)
Text
Text
Comment
Comment
Element
Element
(Attribute)
(Attribute)
Text
Text
Entity
Entity
Reference
Reference
Processing
Processing
Instruction
Instruction
Comment
Comment
Entity
Reference
Entity
Processing
Instruction
CData
Comment
Comment
CData
CData
Processing
Processing
Instruction
Instruction
XML Schema 소개
• DTD의 문제점
– XML 문법이 아닌 다른 문법 형태로 기술  DTD를 위한 문법을 다시 배워야 함
– 제한된 데이터 타입만 지원  문서의 내용을 정확하게 표현하기 어려움
– 재사용성이나 확장성이 부족
• XML Schema
–
–
–
–
DTD의 문제점을 해결
W3C에서 개발
http://www.w3.org.XML/Schema
2001년 5월에 표준화
• 표준화된 Schema 문서 구성
– XML Schema Part 0: Primer
• XML Schema 개발자와 응용프로그램 개발자를 위해 예제 중심으로 설명
• http://www.w3.org/TR/xmlschema-0/
– XML Schema Part 1: Structures
• XML Schema에서 XML 문서의 구조를 기술하는 방법에 대한 표준을 기술
• http://www.w3.org/TR/xmlschema-1/
– XML Schema Part 2: Datatypes
• XML 문서의 원소와 속성이 가질 수 있는 데이터 형태와 새로운 데이터 타입을 선언하
는 방법 기술
• http://www.w3.org/TR/xmlschema-2/
XML Schema 소개
• XML Schema
– 문서의 구조와 사용 가능한 데이터 타입을 정의
– 유효성 체크를 위해 XML Parser는 XML 문서가 XML Schema 규칙의
준수 여부를 확인
– Schema 작성은 Java의 Class를 정의하는 것과 유사
XML
Java
Schema
Class
문서
Object (Instance)
– XML Schema의 네임스페이스
• http://www.w3.org/2001/XMLSchema
– XML Schema 인스턴스 네임스페이
• http://www.w3.org/2001/XMLSchema-instance
12/44
employee.xsd
<?xml version=“1.0” encoding=“euc-kr”?>
<xsd:schema xmlns:xsd=“http://www.w3.org/2001/XMLSchema”>
<xsd:element name=“employee”>
<xsd:complexType>
<xsd:sequence>
<xsd:element name=“name” type=“xsd:string”/>
<xsd:element name=“id” type=“xsd:string”/>
<xsd:element name=“age” type=“xsd:int”/>
<xsd:element name=“dept” type=“xsd:string”/>
<xsd:element name=“title” type=“xsd:string”/>
<xsd:sequence>
<xsd:complexType>
</xsd:element>
<xsd:schema>
employee2.xml
<?xml version=“1.0” encoding=“euc-kr”?>
<employee
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xsi:noNamespaceSchemaLocation=“employee.xsd”>
<name>홍길동</name>
<id>GD199703-123</id>
<age>27</age>
<dept>개발부</dept>
<title>대리</title>
</employee>
employee.java
class employee
{
public String name;
public String id;
public int
age;
public String dept;
public String title;
}
employee2.java
class employee2
{
public employee2()
{
employee person;
person.name = “홍길동”;
person.id = “GD199703123”;
person.age = 27;
person.dept = “개발부”;
person.title = “대리”;
}
}
XML Schema 소개
1
2
Element의 데이터 타입을 선언하는 방법
1.
<complexType> element를 이용한 방법
2.
type 속성을 이용
Schema에 준하는 문서 작성 네임스페이스
네임스페이스를 사용하지 않는 Schema이고,
Schema파일은 employee.xsd 임을 명시
XML Schema 소개
• 원소와 속성은 데이터 타입을 기술
• 데이터 타입의 종류
– built-in datatype
– user-derived datatype
미리 정의된 타입
(built-in datatype)
단순 타입
(simple type)
단순 타입
(simple type)
사용자 정의 타입
(user-derived datatype)
복합 타입
(complex type)
기본형
(primitive datatype)
유도형
(derived datatype)
제한
(restriction)
제한
(restriction)
확장
(extension)
XML Schema 데이터 타입
• 미리 정의된 데이터 타입
– 유도형(derived datatype) – 2개의 범주로 25개 구성
• string으로부터 유도된 타입
– ID, IDREF, NMTOKEN, ENTITY 등
• decimal로 부터 유도된 타입
– integer, negativeInteger, byte, short, long 등
XML Schema 데이터 타입
• 사용자가 정의하는 단순 타입
– 필요한 경우에 새로운 데이터 타입을 정의
• 단순 타입과 복합 타입으로 구분
– 단순 타입
•
•
•
•
<simpleType> Element로 정의
XML Schema에서 정의한 다른 단순 타입을 이용해서 정의
내부에 원소나 속성을 포함할 수 없음
종류
–
단일 타입(atomic type)
» XML Schema 관점에서 더 이상 나눌 수 없는 값을 갖는 데이터
» int, date, NMTOKEN 등
–
–
리스트 타입(list type)
유니온 타입(union type)
– 복합 타입
• complexType 원소 사용
• 내부에 다른 원소와 속성을 포함
• 속성의 데이터 타입은 항상 단순 타입만 사용
17
XML Schema 데이터 타입
• 단순 타입(simple datatype)
– restriction, list, union을 이용해서 확장 가능
형식
<simpleType
final = (#all | (list | union | restriction))
id = ID
name = NCName
{any attributes with non-schema namespace . . . }>
값의 범위를 한 관점에서 정의
숫자인 경우 값의 범위, 문자열 경우 문자열의 길이나 패턴
– 제한(restriction)을 통한 타입 정의
•
•
•
•
기존의 단순 타입이 가질 수 있는 값의 범위를 제한하여 정의
새로운 타입을 정의하기 위해 restriction 원소를 사용
바탕이 되는 기존 단순 타입을 base 속성을 이용해서 기술
패싯(facet)를 이용 값의 범위 제한
XML Schema 데이터 타입
• 복합 타입
– 자식 원소를 갖거나 속성을 필요로 하는 데이터 타입
– <complexType> Element로 정의
– 순차(sequence)
• 자식 원소들이 순서대로 나타나야 하는 경우
• <sequence> Element로 정의
– 선택(choice)
• 여러 개의 서브 원소중에서 하나를 선택할 수 있는 것
• <choice> Element로 정의
– 그룹(group)
– 전체(all)
XML Schema 데이터 타입
• extension을 이용한 복합 타입 확장
– <simpleContent>와 <complexContent> Element의 <extension> Child
Element를 이용하여 새로운 타입을 정의
– <simpleContent>
• 단순 타입을 복합 타입으로 변환하기 위해서 사용
• string 데이터 타입 element에 속성을 추가하는 경우
–
속성은 복합 타입으로만 선언이 가능
• restriction을 이용한 복합 타입 확장
– 기존 데이터 타입에 제약 사항들을 기술
• <simpleContent>에서 <restriction> 형식
• <complexContent>에서 <restriction> 형식
• 추상 타입과 교체
– 추상 원소와 타입
• Java의 추상 클래스 사용 개념과 유사
• ‘abstract’ Attribute 값을 “true”로 지정
• 추상 원소나 데이터 타입은 XML 문서에서는 직접 사용이 불가능  상속을 통해
서 사용
XML의 중요성
• XML 문서는
– Tag를 이용해서 데이터의 의미가 무엇인지를 명확하
게 표현
– text 형태로 저장  모든 컴퓨팅 환경에서 XML 문서
판독 가능
– 문서를 문서구조, 문서내용, 문서 스타일로 분리
– 문서의 구조 정의 : DTD나 XML Schema 사용
– 문서 내용 : 문서의 구조에 맞추어 작성
– 문서 스타일 : 문서 내용을 출력하기 위한 문서 스타
일, XSL과 CSS 등을 사용
XML 관련기술
문서 구조
문서 스타일
DTD
XML Schema
SOX
…
XSLT/XSL-FO
CSS
…
XML 변형
WML
XHTML
MathML
…
SAX
DOM
JDOM
웹 서비스
문서 링크
XPath
Xpointer
XLink
문서 API
XML
문서 보안
Encryption
Signature
…
SOAP
WSDL
UDDI
…
문서 저장
XML-DBMS 매
핑
NXD
XQuery
…
XML 파서의 종류
• XML Parser
– 프로그램에서 XML 문서의 내용을 처리하거나, 내용
을 변경할 경우 사용
– XML 문서가 올바르게 작성되었는지 여부를 판단
• XML Parser의 종류
제작사
제품명
Xerces
Apace Group
MSXML
Microsoft
XML4J
IBM
Oracle XML Parser
Oracle
James Clark의 XP
Xames Clark
Crimson Parser
(J2SDK 1.4.0에 포함)
Apace Group
XML 파서 비교
• XML Parser API 종류
– Tree 기반 API
• XML 문서를 내부적인 tree 구조로 변환
• 응용프로그램이 tree를 traverse 하면서 작업 수행
– Event 기반 API
• 파싱 이벤트을 call-back을 통해 응용 프로그램이 직접 처리
• 내부적으로 tree 구조 생성하지 않음
DOM(Document Object Model)
SAX(Simple API for XML)
가장 대표적인 트리 기반 API
가장 대표적인 이벤트 기반 API
W3C에서 HTML과 XML 문서를 위한
표준 API개발
장점
다양한 분야의 응용프로그램에 사용 가능
DOM에 비해 간단한 구조
시스템 자원을 적게 사용
단점
XML 문서가 큰 경우 많은 시스템 자원을 사용
기능면에서 DOM 만큼 강력하
지 못함
DOM 소개
• SAX API가 유용한 경우
– XML 문서에서 몇 개의 원소만 추출해야 할 때
– 메모리가 부족한 경우
– 문서의 정보를 한 번만 사용하는 경우
• DOM API가 유용한 경우
– 문서의 구조를 알아야 할 필요가 있을 때
– 문서의 일부분을 변경하거나 이동시켜야 할 때
– 문서에 있는 정보를 여러 번 사용해야 할 때
• DOM은 문서를 객체로 표현하고 처리할 수 있는 방법을
제공
– 문서에서 표현되는 데이터를 객체로 표현
– 새로운 내용을 삽입, 변경, 삭제 작업의 수월
– XML문서의 element, attribute, entity, comment, processing
instruction, text 등이 DOM에서는 객체로 정의 되어 있음
DOM 소개
Document
Element
:car
• DOM Level
– Level 1, 2, 3 형태로 구성
– DOM Level 1
Document
Type
Comment
Element
:number
Attr
Element
:model
Text
Element
:owner
• Core 부분과 HTML 부분으로 구성
• Core : XML과 HTML에 공통적으로 적용되는 내용
• HTML 부분 : HTML에만 적용되는 내용
– DOM Level 2
– DOM Level 3
Text
Element
:name
Text
Element
:name
Text
Element
:addr
Text
Element
:desc
• DOM은 문서의 논리적인 구조를 객체로 표현하고, 각 객
체들의 관계는 계층적 구조인 트리 형식으로 표현
Entity
Reference
Text
Element
:em
Text
DOM 소개
• DOM Tree에서 자식 노드를 가질 수 있는 노드
노드 타입
자식으로 올 수 있는 노드
Document
Element, ProcessingInstruction, Comment, DocumentType
DocumentFragment
Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReferenece
DocumentType
없음
EntityReference
Element, ProcessingInstruction, Comment, Text, CDATASection, ENtityReference
Element
Element, Text, Comment, ProcessingInstruction, CDATASection, ENtityReference
Attr
Text, EntityReference
ProcessingInstruction
없음
Comment
없음
Text
없음
CDataSection
없음
Entity
Element, ProcessingInstruction, Comment, Text, CDATASection, EntityReference
Notation
없음
HelloDomParser.java
Apache DOMParser를 생성
Java의 Crimson Parser 생성
DOM API 클래스들
•
•
•
•
•
•
•
•
DOMString
DOMImplemetation
Node
NodeList
NamedNodeMap
Document
Element
Attr
•
•
•
•
•
•
•
CharacterData
Comment
CDATASection
DocumentType
Notation
Entity
EntityReference
DOMString
• DOM에서 사용되는 문자열
– 16비트의 유니코드
• DOMString
– DOM 문자열을 정의
– 각 프로그래밍 언어마다 다른 타입으로 정의
됨
– Java
• DOMString  String
– VC++
• DOMString  Cstring
DOMImplementation
• DOMImplementation Interface
– 문서 인스턴스와 무관하게 수행될 수 있는 기능을 정의
– 메소드
• Document createDocument(…)
– XML 문서 객체를 생성
• DocumentType createDocumentType(…)
– 문서 타입 노드를 생성
• Boolean hasFeature(…)
– 현재 DOM이 가지는 특성들의 지원 여부 파악
Node
• Node Interface
– DOM에서 가장 기본적인 자료형
– DOM 트리에서 노드를 표현하기 위해서 사용
– Element, Comment, Attribute 등은 모두 Node 인터페이스로 부
터 상속 됨
• 상속 받은 객체들(Element, Comment 등)은 각 객체의 특성에 맞는
메소드와 자식 노드들을 처리하기 위한 메소드들을 지님
• 주의 : 모든 객체들이 자식 노드를 가지는 것은 아님
– 노드의 이름과 값을 위한 nodeName, nodeValue 멤버 필드를
가짐
Node
• 각 Node 타입에 따른 nodeName과 NodeValue 값의 의
미
nodeName
nodeValue
attribute
속성의 이름
속성의 값
null
#cdata-section
CDATA 섹션의 내용
null
Comment
#comment
주석 내용
null
Document
#document
null
null
#document-fragment
null
null
문서 타입 이름
null
null
태그 이름
null
NameNodeMap
엔티티 이름
null
null
엔티티 레퍼런스 이름
null
null
노테이션 이름
null
null
ProcessingInstruction
타켓
타켓을 제외한 내용
null
Text
#text
텍스트 노드의 내용
null
Attr
CDATASection
DocumentFragment
DocumentType
Element
Entity
EntityReference
Notation
Node
• 각 Node는 자신의 Node 타입을 확인 가
멤버필드
값
능
ELEMENT_NODE
1
ATTRIBUTE_NODE
2
TEXT_NODE
3
CDATA_SECTION_NODE
4
ENTITY_REFERENCE_NODE
5
ENTITY_NODE
6
PROCESSING_INSTRUCTION_NODE
7
COMMENT_NODE
8
DOCUMENT_NODE
9
DOCUMENT_TYPE_NODE
10
DOCUMENT_FRAGMENT_NODE
11
NOTATION_NODE
12
Node
• Node 인터페이스 세가지 범주
– Node에 관련된 정보(타입, 이름, 값) 등을 얻기 위한
메소드들
– XML 문서 내용에 대한 읽기, 변경, 삭제 하기 위한 메소드들
– 부모 노드, 자식 노드, 형제 노드에 관련된 정보를 얻기 위한
메소드들
• Node 정보에 관련된 메소드들
메소드
설명
string getNodeName()
노드의 이름을 리턴
string getNodeValue()
노드의 값을 리턴
void setNodeValue(String nodeValue)
노드 값을 설정
short getNodeType
노드 타입을 리턴
NamedNodeMap getAttributes()
속성들을 리턴
Document getOwnerDocument()
현재 노드가 속한 문서를 리턴
Node
• XML 문서 내용에 관련한 메소드
메소드
설명
Node insertBefore(Node newChild, Node refChild)
refChild노드에 newChild 노드를 삽입
Node replaceChild(Node newChild, Node oldChild)
oldChild 노드를 newChild 노드로 대체
Node removeChild(Node oldChild)
oldChild 노드를 삭제
Node appendChild(Node newChild)
newChild노드를 추가
Node cloneNode(boolean deep)
노드를 복제
• 부모 노드, 자식 노드, 형제 노드에 관련된 메소드
메소드
설명
Node getParentNode()
부모 노드를 리턴
NodeList getChildNodes()
자식 노드를 NodeList 타입으로 리턴
Node getFirstChild()
첫 번째 자식 노드를 리턴
Node LastChild()
마지막 자식 노드를 리턴
Node getPreviousSibling()
전의 형제 노드를 리턴
Node getNextSibling()
다음의 형제 노드를 리턴
boolean hasChildNodes()
자식 노드가 있는지 확인
NodeList
• NodeList
– 순서있는 노드들의 집합을 표현
• 노드의 순서는 XML 문서에서 부모 노드에 노드들을 추가한
순서
– NodeList에 포함된 노드들은 인덱스 값을 이용해서
접근
– 인덱스는 0부터 시작
메소드
설명
Node item(int index)
index 번째의 노드를 리턴(0부터 시작)
int getLength()
NodeList에 포함되어 있는 노드의 수를 리턴
Document
• Document Interface
– HTML혹은 XML 문서 전체를 표현하기 위해 사용
– 문서 tree에서 root에 해당
– Element, Text, Comment, Processing Instruction 등은 존재 안
함
– 세 가지 종류의 메소드들
• 문서에 관련된 정보에 대한 메소드
• 문서 트리를 순회하기 위한 메소드
• 문서를 작성하기 위한 메소드
Document
• 문서에 관련된 정보를 얻기 위한 메소드들
메소드
설명
DocumentType getDoctype()
문서에 정의된 엔티티들에 대한 접근을 위한 DocumentType
객체를 리턴
DOMImplementation
getImplementation()
파서의 특성을 파악하기 위한 DOMImplementation 객체를
리턴
• 문서 트리를 순회하기 위한 메소드들
메소드
설명
Element getDocumentElement()
문서 element를 리턴
Element getElementById(String elementId)
주어진 ID를 가지는 원소를 리턴
NodeList getElementsByTagName(String
tagName)
Tag 이름이 tagname인 모든 원소를 리턴
NodeList getElementsByTagNameNS(…)
주어진 이름과 네임스페이슬 갖는 원소를 리턴
Document
• 문서를 작성하기 위한 메소드들
메소드
설명
Element createElement(String tagName)
tagName에 해당하는 tag element를 생성
Element createElementNS(…)
주어진 이름과 네임스페이스를 이용해서 원소를
생성
DocumentFragment createDocumentFragment()
DocumentFragment를 생성
Text createTextNode(String data)
data를 가지는 텍스트 노드를 생성
Comment createComment(String data)
data를 가지는 주석 노드를 생성
CDATASection createCDATASection(String data)
data를 가지는 CDATASection을 생성
ProcessingInstruction
createProcessingInstruction(…)
ProcessingInstruction를 생성
Attr createAttribute(String name)
이름이 name인 속성을 생성
Attr createAttributeNS(…)
주어진 이름과 네임스페이스를 이용해서 속성을
생성
EntityReference createEntityReference(String
name)
Entity Reference를 생성
Node importNode(Node importedNode,
boolean deep)
다른 문서에서 현재 문서의 노드들을 import
Element
• Element 인터페이스
– HTML이나 XML 문서에서 원소를 표현하기 위해서 사용
– 두 가지 종류의 메소드들
• Element 객체의 속성을 접근하고, 처리하는
메소드
• 원소의 태그를 접근하기 위한 메소드
Element
• Element 객체의 속성을 접근하고 처리하는 메소드들
메소드
설명
String getAttribute(String name)
이름이 name인 속성의 값을 리턴
String getAttributeNS(…)
주어진 이름과 네임스페이스를 갖는 속성의 값을 리턴
Attr getAttributeNode(String name)
이름이 name인 속성을 리턴
Attr getAttributeNodeNS(…)
주어진 이름과 네임스페이스를 갖는 속성
void removeAttribute(String name)
주어진 이름의 속성을 삭제
Attr removeAttributeNode(Attr oldAttr)
oldAttr 속성을 삭제
void removeAttributeNS(…)
주어진 이름과 네임스페이를 갖는 속성을 삭제
void setAttributeNode(Attr newAttr)
주어진 이름과 값을 갖는 속성을 추가하거나 속성의 값
을 변경
void setAttributeNodeNS(…)
네임스페이스를 사용하여 속성을 추가하거나 속성의 값
을 변경
void setAttributeNS(…)
주어진 내용을 토대로 새로운 속성을 추가
Element
• 원소의 태그를 접근하기 위한 메소드
메소드
설명
String getTagName()
태그 이름을 리턴
NodeList getElementsByTagName(String name)
태그 이름이 name인 모든 원소를 리턴
NodeList getElementsByTagName(String
namespaceURI, String localName)
주어진 이름과 네임스페이스를 갖는 모든 원소
를 리턴
boolean hasAttribute(String name)
주어진 이름의 속성이 있는 경우에 true를 리턴
boolean hasAttributeNS(String namespaceURI,
String localName)
주어진 이름과 네임스페이를 갖는 속성이 있는
경우에 true를 리턴
Attribute
• Attr 인터페이스
– Element의 속성을 표현
메소드
설명
String getName()
속성의 이름을 리턴
boolean getSpecified()
원 문서에서 속성이 명시적으로 값이 주어진 경
우 true
String getValue()
속성의 값을 리턴
void setValue(String value)
속성의 값을 설정
Element getOwnerElement() 이 속성이 소속된 원소를 리턴
CharacterData
• CharacterData 인터페이스
– DOM에서 문자데이터를 접근하기 위한 메소드들과 멤버필드
– Text 인터페이스를 통해서만 CharacterData의 내용을 접근
메소드
void appendData(String arg)
설명
노드의 문자 데이터 끝에 문자열을 추가
void deleteData(int offset, int count) 노드에서 데이터를 삭제
String getData()
CharacterData 인터페이스를
Implementation 한 노드의 문자 데이터
를 리턴
void getLength()
문자열의 길이를 리턴
void insertData(int offset, String arg) offset 위치에 문자열을 삽입
void replaceaData(…)
offset 위치에서 count개의 문자를 arg
문자열로 변경
void setData(String data)
데이터를 설정
String substringData(int offset, int
count)
offset으로 부터 count수만큼 리턴
Text
• Text 인터페이스
– CharacterData로 부터 상속받음
– Element와 Attr의 텍스트 내용을 표현하기 위해 사용
메소드
Text splitText(int offset)
설명
offset을 기준으로 두 개의 텍스트로
분리
DOM 기타 API 클래스들
•
•
•
•
•
•
•
NamedNodeMap
Comment
CDATASection
DocumentType
Notation
Entity
EntityReference
47
• 교재 소스 파일 다운로드
– http://www.infopub.co.kr/pds/wroxpds/searc
h-result-bbs.asp
49