|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
public interface XMLStreamReader
XMLStreamReader 인터페이스를 사용하면(자), XML 의 순서 방향의 읽기 전용 액세스를 실시할 수가 있습니다. 이것은, XML 데이터의 최하정도 레벨에서의 가장 효율적인 읽어내 방법이 되도록(듯이) 설계되고 있습니다.
XMLStreamReader 는 next()와 hasNext()를 사용해 XML 를 반복 처리 해 나가도록(듯이) 설계되고 있습니다. 데이터에는, getEventType(), getNamespaceURI(), getLocalName(), getText()등의 메소드를 사용해 액세스 가능합니다.
next() 메소드를 사용하면(자), 리더는 다음의 해석 이벤트를 읽어냅니다. next() 메소드는, 읽어낸 이벤트의 형태를 식별하는 정수치를 돌려줍니다.
이벤트형은,getEventType() 를 사용해 판별할 수 있습니다.
이벤트의 해석은, XML 선언, DTD, 개시 태그, 문자 데이터, 공백 문자, 종료 태그, 코멘트, 또는 처리 명령으로서 정의됩니다. 속성 이벤트 또는 이름 공간 이벤트가, 쿼리처리의 결과로서 문서의 루트 레벨로 발견되는 경우도 있습니다.
XML 1.0 준거의 XML 프로세서는, 선언 끝난 해석 대상외 엔티티의 식별자, 표기법선언, 및 그것들에 관련지을 수 있었던 식별자를 어플리케이션에 건네줍니다. 이러한 정보는, 이 인터페이스의 프로퍼티 API 를 통해서 제공됩니다. javax.xml.stream.notations 와 javax.xml.stream.entities 의 2 개의 프로퍼티에 의해, 이러한 정보에 액세스 할 수 있습니다. 현재의 이벤트가 DTD 이면,List l = (List) getProperty("javax.xml.stream.notations");
의 호출에 의해 표기법의 리스트가 돌려주어집니다. List l = (List) getProperty("javax.xml.stream.entities");
의 호출에 의해, 엔티티 선언의 리스트가 돌려주어집니다. 이러한 프로퍼티에는, DTD 이벤트의 사이만 액세스 할 수 있습니다. 또, 정보가 무효인 경우는 null 가 돌려주어지도록(듯이) 정의되고 있습니다.
다음의 겉(표)에, 어느 메소드가 어떠한 상태로 유효한가에 임해서 가리킵니다. 무효인 상태로 불려 간 메소드는 java.lang.IllegalStateException 를 throw 합니다.
상태마다의 유효한 메소드 | |
---|---|
이벤트형 | 유효한 메소드 |
모든 상태 | getProperty(), hasNext(), require(), close(), getNamespaceURI(), isStartElement(), isEndElement(), isCharacters(), isWhiteSpace(), getNamespaceContext(), getEventType(), getLocation(), hasText(), hasName() |
START_ELEMENT | next(), getName(), getLocalName(), hasName(), getPrefix(), getAttributeXXX(), isAttributeSpecified(), getNamespaceXXX(), getElementText(), nextTag() | ATTRIBUTE | next(), nextTag() getAttributeXXX(), isAttributeSpecified() | NAMESPACE | next(), nextTag(), getNamespaceXXX() |
END_ELEMENT | next(), getName(), getLocalName(), hasName(), getPrefix(), getNamespaceXXX(), nextTag() |
CHARACTERS | next(), getTextXXX(), nextTag() |
CDATA | next(), getTextXXX(), nextTag() |
COMMENT | next(), getTextXXX(), nextTag() |
SPACE | next(), getTextXXX(), nextTag() |
START_DOCUMENT | next(), getEncoding(), getVersion(), isStandalone(), standaloneSet(), getCharacterEncodingScheme(), nextTag() |
END_DOCUMENT | close() |
PROCESSING_INSTRUCTION | next(), getPITarget(), getPIData(), nextTag() |
ENTITY_REFERENCE | next(), getLocalName(), getText(), nextTag() |
DTD | next(), getText(), nextTag() |
XMLEvent
,
XMLInputFactory
,
XMLStreamWriter
필드의 개요 |
---|
인터페이스 javax.xml.stream. XMLStreamConstants 로부터 상속된 필드 |
---|
ATTRIBUTE , CDATA , CHARACTERS , COMMENT , DTD , END_DOCUMENT , END_ELEMENT , ENTITY_DECLARATION , ENTITY_REFERENCE , NAMESPACE , NOTATION_DECLARATION , PROCESSING_INSTRUCTION , SPACE , START_DOCUMENT , START_ELEMENT |
메소드의 개요 | |
---|---|
void |
close ()
이 리더가 관련지을 수 있었던 자원을 모두 해제합니다. |
int |
getAttributeCount ()
이 START_ELEMENT 상의 속성의 수를 돌려줍니다. |
String |
getAttributeLocalName (int index)
지정된 인덱스에 있는 속성의 localName 를 돌려줍니다. |
QName |
getAttributeName (int index)
지정된 인덱스에 있는 속성의 qname 를 돌려줍니다. |
String |
getAttributeNamespace (int index)
지정된 인덱스에 있는 속성의 이름 공간을 돌려줍니다. |
String |
getAttributePrefix (int index)
지정된 인덱스에 있는 속성의 접두사를 돌려줍니다. |
String |
getAttributeType (int index)
지정된 인덱스에 있는 속성의 XML 형을 돌려줍니다. |
String |
getAttributeValue (int index)
인덱스에 있는 속성의 값을 돌려줍니다. |
String |
getAttributeValue (String namespaceURI,
String localName)
이름 공간과 localName 를 가지는 속성의 정규화된 속성치를 돌려줍니다. |
String |
getCharacterEncodingScheme ()
XML 선언으로 선언된 문자 인코딩을 돌려줍니다. |
String |
getElementText ()
텍스트만의 요소의 컨텐츠를 읽어냅니다. |
String |
getEncoding ()
입력 인코딩이 기존의 경우는, 그 입력 인코딩을 돌려줍니다. |
int |
getEventType ()
커서가 포인트 하고 있는 이벤트의 형태를 나타내는 정수형 코드를 돌려줍니다. |
String |
getLocalName ()
현재의 이벤트의 로컬명을 돌려줍니다. |
Location |
getLocation ()
프로세서의 현재의 위치를 돌려줍니다. |
QName |
getName ()
현재의 START_ELEMENT 또는 END_ELEMENT 이벤트의 QName 를 돌려줍니다. |
NamespaceContext |
getNamespaceContext ()
현재의 위치의 읽기 전용의 이름 공간 문맥을 돌려줍니다. |
int |
getNamespaceCount ()
이 START_ELEMENT 또는 END_ELEMENT 로 선언된 이름 공간의 수를 돌려줍니다. |
String |
getNamespacePrefix (int index)
지정된 인덱스로 선언된 이름 공간의 접두사를 돌려줍니다. |
String |
getNamespaceURI ()
현재의 이벤트가 START_ELEMENT 또는 END_ELEMENT 인 경우, 이 메소드는 접두사의 URI 또는 디폴트의 이름 공간을 돌려줍니다. |
String |
getNamespaceURI (int index)
지정된 인덱스로 선언된 이름 공간의 URI 를 돌려줍니다. |
String |
getNamespaceURI (String prefix)
지정된 접두사의 URI 를 돌려줍니다. |
String |
getPIData ()
처리 명령의 데이터 섹션을 가져옵니다. |
String |
getPITarget ()
처리 명령의 타겟을 가져옵니다. |
String |
getPrefix ()
현재의 이벤트의 접두사를 돌려줍니다. |
Object |
getProperty (String name)
기본이 되는 구현으로부터 기능 또는 프로퍼티의 값을 가져옵니다. |
String |
getText ()
구문 분석 이벤트의 현재의 값을 캐릭터 라인으로서 돌려줍니다. |
char[] |
getTextCharacters ()
이 이벤트로부터의 문자를 포함한 배열을 돌려줍니다. |
int |
getTextCharacters (int sourceStart,
char[] target,
int targetStart,
int length)
CHARACTERS, SPACE, 또는 CDATA 이벤트에 관련지을 수 있었던 텍스트를 가져옵니다. |
int |
getTextLength ()
이 텍스트 이벤트에 대한 텍스트 문자 배열내의 문자 순서의 길이를 돌려줍니다. |
int |
getTextStart ()
이 텍스트 이벤트의 최초의 문자가 보존되고 있는 텍스트 문자 배열에의 오프셋(offset)를 돌려줍니다. |
String |
getVersion ()
XML 선언으로 선언된 XML 버젼을 가져옵니다. |
boolean |
hasName ()
현재의 이벤트가 이름 (START_ELEMENT 또는 END_ELEMENT)을 가지는 경우 true, 그렇지 않은 경우 false 를 돌려줍니다. |
boolean |
hasNext ()
구문 분석 이벤트가 아직 있는 경우는 true, 그렇지 않은 경우는 false 를 돌려줍니다. |
boolean |
hasText ()
현재의 이벤트에 텍스트가 포함되는 경우 true, 그렇지 않은 경우 false 를 돌려줍니다. |
boolean |
isAttributeSpecified (int index)
이 속성이 디폴트로 작성되었는지의 여부를 나타내는 boolean 치를 돌려줍니다. |
boolean |
isCharacters ()
커서가 문자 데이터 이벤트를 포인트 하고 있는 경우는 true 를 돌려줍니다. |
boolean |
isEndElement ()
커서가 종료 태그를 포인트 하고 있는 경우는 true, 그렇지 않은 경우는 false 를 돌려줍니다. |
boolean |
isStandalone ()
XML 선언으로부터 스탠드얼론 선언을 가져옵니다. |
boolean |
isStartElement ()
커서가 개시 태그를 포인트 하고 있는 경우는 true, 그렇지 않은 경우는 false 를 돌려줍니다. |
boolean |
isWhiteSpace ()
커서가 공백 문자만으로 구성되는 문자 데이터 이벤트를 포인트 하고 있는 경우는 true 를 돌려줍니다. |
int |
next ()
다음의 구문 분석 이벤트를 가져옵니다. |
int |
nextTag ()
START_ELEMENT 또는 END_ELEMENT 에 이를 때까지, 모든 공백 문자 (isWhiteSpace()가 true 를 돌려준다), COMMENT, 또는 PROCESSING_INSTRUCTION 를 스킵 합니다. |
void |
require (int type,
String namespaceURI,
String localName)
현재의 이벤트가 지정의 형태인가 부디 이름 공간과 이름이 현재의 이벤트의 현재의 이름 공간과 이름에 일치할지 어떨지를 테스트합니다. |
boolean |
standaloneSet ()
문서로 스탠드얼론이 설정되어 있었는지의 여부를 확인합니다. |
메소드의 상세 |
---|
Object getProperty(String name) throws IllegalArgumentException
name
- 프로퍼티의 이름 (null 이외)
IllegalArgumentException
- name 가 null 의 경우int next() throws XMLStreamException
다음의 XML 에 대해 생각합니다.
<foo><! --description-->content text<! [CDATA[<greeting>Hello</greeting>]]>other content</foo>
foo 에 대한 next() 호출의 동작은 이하대로입니다.
1- 코멘트 (COMMENT)
2- 문자 섹션 (CHARACTERS)
3- CDATA 섹션 ( 이제(벌써) 1 개의 CHARACTERS)
4- 다음의 문자 섹션 ( 이제(벌써) 1 개의 CHARACTERS)
5- END_ELEMENT
주: 공의 요소 (<tag/> 등)는 2 개의 별개의 이벤트인 START_ELEMENT 와 END_ELEMENT 로서 보고됩니다. 이것에 의해, 빈 상태(empty)의 요소의 해석이 <tag></tag> 와 동일하게 유지됩니다. hasNext()가 false 를 돌려주면(자), 이 메소드는 IllegalStateException 를 throw 합니다.
NoSuchElementException
- hasNext()가 false 를 돌려주었을 때에 불려 갔을 경우
XMLStreamException
- 기본이 되는 XML 소스의 처리에 에러가 발생했을 경우XMLEvent
void require(int type, String namespaceURI, String localName) throws XMLStreamException
type
- 이벤트의 형태namespaceURI
- 이벤트의 URI (null 의 경우도 있다)localName
- 이벤트의 localName (null 의 경우도 있다)
XMLStreamException
- 요구된 값이 일치하지 않았던 경우String getElementText() throws XMLStreamException
if(getEventType() ! = XMLStreamConstants.START_ELEMENT) { throw new XMLStreamException( "parser must be on START_ELEMENT to read next text", getLocation()); } int eventType = next(); StringBuffer content = new StringBuffer(); while(eventType ! = XMLStreamConstants.END_ELEMENT ) { if(eventType == XMLStreamConstants.CHARACTERS || eventType == XMLStreamConstants.CDATA || eventType == XMLStreamConstants.SPACE || eventType == XMLStreamConstants.ENTITY_REFERENCE) { buf.append(getText()); } else if(eventType == XMLStreamConstants.PROCESSING_INSTRUCTION || eventType == XMLStreamConstants.COMMENT) { // skipping } else if(eventType == XMLStreamConstants.END_DOCUMENT) { throw new XMLStreamException( "unexpected end of document when reading element text content", this); } else if(eventType == XMLStreamConstants.START_ELEMENT) { throw new XMLStreamException( "element text content may not contain START_ELEMENT", getLocation()); } else { throw new XMLStreamException( "Unexpected event type "+eventType, getLocation()); } eventType = next(); } return buf.toString();
XMLStreamException
- 현재의 이벤트가 START_ELEMENT 가 아닌 경우,
또는 텍스트 이외의 요소가 발견되었을 경우int nextTag() throws XMLStreamException
int eventType = next(); while((eventType == XMLStreamConstants.CHARACTERS && isWhiteSpace()) // skip whitespace || (eventType == XMLStreamConstants.CDATA && isWhiteSpace()) // skip whitespace || eventType == XMLStreamConstants.SPACE || eventType == XMLStreamConstants.PROCESSING_INSTRUCTION || eventType == XMLStreamConstants.COMMENT ) { eventType = next(); } if (eventType ! = XMLStreamConstants.START_ELEMENT && eventType ! = XMLStreamConstants.END_ELEMENT) { throw new String XMLStreamException("expected start or end tag", getLocation()); } return eventType;
XMLStreamException
- 현재의 이벤트가 공백 문자, PROCESSING_INSTRUCTION,
START_ELEMENT, 또는 END_ELEMENT 가 아닌 경우
NoSuchElementException
- hasNext()가 false 를 돌려주었을 때에 불려 갔을 경우boolean hasNext() throws XMLStreamException
XMLStreamException
- 다음 상태의 검출시에 치명적인 에러가 발생했을 경우void close() throws XMLStreamException
XMLStreamException
- 관련지을 수 있었던 자원의 해제으로 에러가 발생했을 경우String getNamespaceURI(String prefix)
주: 접두사 「xml」는,Namespaces in XML 권고로 정의되고 있도록(듯이) 「http://www.w3.org/XML/1998/namespace」에 바인드 됩니다.
주: 접두사 「xmlns」는 이름 공간 http://www.w3.org/2000/xmlns/ 에 해결될 필요가 있습니다.
prefix
- 검색하는 접두사 (null 이외)
IllegalArgumentException
- 접두사가 null 의 경우boolean isStartElement()
boolean isEndElement()
boolean isCharacters()
boolean isWhiteSpace()
String getAttributeValue(String namespaceURI, String localName)
namespaceURI
- 속성의 이름 공간localName
- 속성의 로컬명 (null 이외)
IllegalStateException
- START_ELEMENT 또는 ATTRIBUTE 가 아닌 경우int getAttributeCount()
IllegalStateException
- START_ELEMENT 또는 ATTRIBUTE 가 아닌 경우QName getAttributeName(int index)
index
- 속성의 위치
IllegalStateException
- START_ELEMENT 또는 ATTRIBUTE 가 아닌 경우String getAttributeNamespace(int index)
index
- 속성의 위치
IllegalStateException
- START_ELEMENT 또는 ATTRIBUTE 가 아닌 경우String getAttributeLocalName(int index)
index
- 속성의 위치
IllegalStateException
- START_ELEMENT 또는 ATTRIBUTE 가 아닌 경우String getAttributePrefix(int index)
index
- 속성의 위치
IllegalStateException
- START_ELEMENT 또는 ATTRIBUTE 가 아닌 경우String getAttributeType(int index)
index
- 속성의 위치
IllegalStateException
- START_ELEMENT 또는 ATTRIBUTE 가 아닌 경우String getAttributeValue(int index)
index
- 속성의 위치
IllegalStateException
- START_ELEMENT 또는 ATTRIBUTE 가 아닌 경우boolean isAttributeSpecified(int index)
index
- 속성의 위치
IllegalStateException
- START_ELEMENT 또는 ATTRIBUTE 가 아닌 경우int getNamespaceCount()
IllegalStateException
- START_ELEMENT, END_ELEMENT, 또는 NAMESPACE 가 아닌 경우String getNamespacePrefix(int index)
index
- 이름 공간 선언의 위치
IllegalStateException
- START_ELEMENT, END_ELEMENT, 또는 NAMESPACE 가 아닌 경우String getNamespaceURI(int index)
index
- 이름 공간 선언의 위치
IllegalStateException
- START_ELEMENT, END_ELEMENT, 또는 NAMESPACE 가 아닌 경우NamespaceContext getNamespaceContext()
int getEventType()
String getText()
IllegalStateException
- 이 상태가
유효한 텍스트 상태가 아닌 경우char[] getTextCharacters()
IllegalStateException
- 이 상태가
유효한 텍스트 상태가 아닌 경우int getTextCharacters(int sourceStart, char[] target, int targetStart, int length) throws XMLStreamException
int length = 1024; char[] myBuffer = new char[ length ];
for ( int sourceStart = 0 ; ; sourceStart += length ) { int nCopied = stream.getTextCharacters( sourceStart, myBuffer, 0, length );
if (nCopied < length) break; }
기본이 되는 소스로 어떠한 XML 에러가 발생하면(자), XMLStreamException 가 throw 됩니다. targetStart 인수는 0 이상으로, target 의 길이보다 작을 필요가 있어, length 는 0 보다 크고, targetStart 와 length 의 합계는 target 의 길이 이하인 것이 필요합니다.
sourceStart
- 카피 대상 소스 배열내의 최초의 문자의 인덱스target
- 전송처 배열targetStart
- 타겟의 배열내에서의 개시 오프셋(offset)length
- 카피하는 문자수
XMLStreamException
- 기본이 되는 XML 소스가 정형식이 아닌 경우
IndexOutOfBoundsException
- targetStart 가 0 보다 작은지, 타겟의 길이보다 큰 경우
IndexOutOfBoundsException
- length 가 0 보다 작은지, targetStart 와 length 의 합계가 타겟의 길이보다 큰 경우
UnsupportedOperationException
- 이 메소드가 지원되어 있지 않은 경우
NullPointerException
- target 가 null 의 경우int getTextStart()
IllegalStateException
- 이 상태가
유효한 텍스트 상태가 아닌 경우int getTextLength()
IllegalStateException
- 이 상태가
유효한 텍스트 상태가 아닌 경우String getEncoding()
boolean hasText()
Location getLocation()
QName getName()
IllegalStateException
- START_ELEMENT 또는
END_ELEMENT 가 아닌 경우String getLocalName()
IllegalStateException
- START_ELEMENT,
END_ELEMENT, 또는 ENTITY_REFERENCE 가 아닌 경우boolean hasName()
String getNamespaceURI()
String getPrefix()
String getVersion()
boolean isStandalone()
boolean standaloneSet()
String getCharacterEncodingScheme()
String getPITarget()
String getPIData()
|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.