public interface XMLStreamReader extends XMLStreamConstants
XMLStreamReader разрабатывается, чтобы выполнить итерации по XML, использующему затем () и hasNext (). К данным можно получить доступ, используя методы, такие как getEventType (), getNamespaceURI (), getLocalName () и getText ();
Следующее () метод заставляет читателя читать следующее событие синтаксического анализа. Следующее () метод возвращает целое число, которое идентифицирует тип события только чтение.
Тип события может быть определен, используя getEventType ().
Анализирующие события определяются как XML Объявление, DTD, запускают тег, символьные данные, пробел, конечный тэг, комментарий, или инструкцию обработки. С атрибутом или событием пространства имен можно встретиться на корневом уровне документа как результат работы запроса.
Для соответствия XML 1.0 процессор XML должен передать идентификаторы объявленных непроанализированных объектов, объявлений нотации и их связанных идентификаторов к приложению. Эта информация предоставляется через API свойства в этом интерфейсе. Следующие два свойства предоставляют доступ к этой информации: javax.xml.stream.notations и javax.xml.stream.entities. Когда текущее событие будет DTD, следующий вызов возвратит список Нотаций List l = (List) getProperty("javax.xml.stream.notations");
Следующий вызов возвратит список объявлений объекта: List l = (List) getProperty("javax.xml.stream.entities");
К этим свойствам можно только получить доступ во время события DTD и определяются, чтобы возвратить нуль, если информация не доступна.
Следующая таблица описывает, какие методы допустимы в какой состояние. Если метод вызовут в недопустимом состоянии, то метод бросит java.lang. IllegalStateException.
Допустимые методы для каждого состояния | |
---|---|
Тип события | Допустимые Методы |
Все государства | getProperty (), hasNext (), требуют (), близко (), getNamespaceURI (), isStartElement (), isEndElement (), isCharacters (), isWhiteSpace (), getNamespaceContext (), getEventType (), getLocation (), hasText (), hasName () |
START_ELEMENT | затем (), getName (), getLocalName (), hasName (), getPrefix (), getAttributeXXX (), isAttributeSpecified (), getNamespaceXXX (), getElementText (), nextTag () | АТРИБУТ | затем (), nextTag () getAttributeXXX (), isAttributeSpecified (), | ПРОСТРАНСТВО ИМЕН | затем (), nextTag () getNamespaceXXX () |
END_ELEMENT | затем (), getName (), getLocalName (), hasName (), getPrefix (), getNamespaceXXX (), nextTag () |
СИМВОЛЫ | затем (), getTextXXX (), nextTag () |
CDATA | затем (), getTextXXX (), nextTag () |
КОММЕНТАРИЙ | затем (), getTextXXX (), nextTag () |
ПРОСТРАНСТВО | затем (), getTextXXX (), nextTag () |
START_DOCUMENT | затем (), getEncoding (), getVersion (), isStandalone (), standaloneSet (), getCharacterEncodingScheme (), nextTag () |
END_DOCUMENT | близко () |
PROCESSING_INSTRUCTION | затем (), getPITarget (), getPIData (), nextTag () |
ENTITY_REFERENCE | затем (), getLocalName (), getText (), nextTag () |
DTD | затем (), getText (), nextTag () |
XMLEvent
, XMLInputFactory
, XMLStreamWriter
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, этот метод только допустим на START_ELEMENT или АТРИБУТЕ.
|
Строка |
getAttributeLocalName(int index)
Возвращается localName атрибута в обеспеченном индексируют
|
QName |
getAttributeName(int index)
Возвращается qname атрибута в обеспеченном индексируют
|
Строка |
getAttributeNamespace(int index)
Возвращается пространство имен атрибута в обеспеченном индексируют
|
Строка |
getAttributePrefix(int index)
Возвращается префикс этого атрибута в обеспеченном индексируют
|
Строка |
getAttributeType(int index)
Возвращается тип XML атрибута в обеспеченном индексируют
|
Строка |
getAttributeValue(int index)
Возвращает значение атрибута при индексировании
|
Строка |
getAttributeValue(String namespaceURI, String localName)
Возвращает нормализованное значение атрибута атрибута с пространством имен и localName, Если namespaceURI является нулем, пространство имен не проверяется на равенство
|
Строка |
getCharacterEncodingScheme()
Возвращает кодировку символов, объявленную на xml объявлении нуль Возвратов, если ни один не был объявлен
|
Строка |
getElementText()
Читает контент элемента только для текста, исключение выдается, если это не элемент только для текста.
|
Строка |
getEncoding()
Возвратите входное кодирование если известный или нуль если неизвестный.
|
int |
getEventType()
Возвращает целочисленный код, который указывает на тип события, на которое указывает курсор.
|
Строка |
getLocalName()
Возвращает (локальное) имя текущего события.
|
Расположение |
getLocation()
Возвратите текущее расположение процессора.
|
QName |
getName()
Возвращает QName для текущего события START_ELEMENT ИЛИ END_ELEMENT
|
NamespaceContext |
getNamespaceContext()
Возвращает контекст пространства имен только для чтения для текущей позиции.
|
int |
getNamespaceCount()
Возвращает количество пространств имен, объявленных на этом START_ELEMENT или END_ELEMENT, этот метод только допустим на START_ELEMENT, END_ELEMENT или ПРОСТРАНСТВЕ ИМЕН.
|
Строка |
getNamespacePrefix(int index)
Возвращает префикс для пространства имен, объявленного при индексировании.
|
Строка |
getNamespaceURI()
Если текущее событие является START_ELEMENT или END_ELEMENT, этот метод возвращает URI префикса или пространства имен по умолчанию.
|
Строка |
getNamespaceURI(int index)
Возвращает туров для пространства имен, объявленного при индексировании.
|
Строка |
getNamespaceURI(String prefix)
Возвратите туров для данного префикса.
|
Строка |
getPIData()
Получите раздел данных инструкции обработки
|
Строка |
getPITarget()
Получите цель инструкции обработки
|
Строка |
getPrefix()
Возвращает префикс текущего события или нуля, если у события нет префикса
|
Объект |
getProperty(String name)
Получите значение функции/свойства от базовой реализации
|
Строка |
getText()
Возвращает текущую стоимость события синтаксического анализа как строка, это возвращает строковое значение события CHARACTERS, возвращает значение КОММЕНТАРИЯ, заменяющее значение для ENTITY_REFERENCE, строковое значение раздела CDATA, строковое значение для события SPACE, или Строковое значение внутреннего подмножества DTD.
|
char[] |
getTextCharacters()
Возвращает массив, который содержит символы от этого события.
|
int |
getTextCharacters(int sourceStart, char[] target, int targetStart, int length)
Получает текст, связанный с СИМВОЛЫ, событие SPACE ИЛИ CDATA.
|
int |
getTextLength()
Возвращает длину последовательности символов для этого текстового события в пределах текстового массива символа.
|
int |
getTextStart()
Возвращает смещение в текстовый массив символа, где первый символ (этого текстового события) сохранен.
|
Строка |
getVersion()
Объявите xml версию на xml объявлении нуль Возвратов, если ни один не был объявлен
|
boolean |
hasName()
возвращает true, если у текущего события есть имя (START_ELEMENT, или END_ELEMENT) возвращает false иначе
|
boolean |
hasNext()
Возвращает true, если там более анализируют события и ложь, если нет больше событий.
|
boolean |
hasText()
Возвратите true, если у текущего события есть текст, ложь иначе, У следующих событий есть текст: СИМВОЛЫ, DTD, ENTITY_REFERENCE, КОММЕНТАРИЙ, ПРОСТРАНСТВО
|
boolean |
isAttributeSpecified(int index)
Возвращает булево, которое указывает, создавался ли этот атрибут по умолчанию
|
boolean |
isCharacters()
Возвращает true, если курсор указывает на символьное событие данных
|
boolean |
isEndElement()
Возвращает true, если курсор указывает на конечный тэг (иначе ложь)
|
boolean |
isStandalone()
Получите автономное объявление от xml объявления
|
boolean |
isStartElement()
Возвращает true, если курсор указывает на тег запуска (иначе ложь)
|
boolean |
isWhiteSpace()
Возвращает true, если курсор указывает на символьное событие данных, которое состоит из всего пробела
|
int |
next()
Получите следующее событие парсинга - процессор может возвратить все непрерывные символьные данные в единственном блоке, или это может разделить это на несколько блоков.
|
int |
nextTag()
Достигаются пропуски любой пробел (isWhiteSpace () возвращает true), КОММЕНТАРИЙ, или PROCESSING_INSTRUCTION, до START_ELEMENT или END_ELEMENT.
|
void |
require(int type, String namespaceURI, String localName)
Тест, если текущее событие имеет данный тип и если пространство имен и имя соответствуют текущее пространство имен и имя текущего события.
|
boolean |
standaloneSet()
Проверки если автономный были установлены в документе
|
Object getProperty(String name) throws IllegalArgumentException
name
- Имя свойства, возможно, не нульIllegalArgumentException
- если имя является нулемint next() throws XMLStreamException
Учитывая следующий XML:
<foo> <! - описание-> текст контента <! [CDATA [<приветствующий> Привет </приветствующий>]]> другой контент </foo>
Поведение вызова затем () будучи на foo будет:
1-комментарий (КОММЕНТАРИЙ)
2-тогда раздел символов (СИМВОЛЫ)
3-тогда раздел CDATA (другой СИМВОЛЫ)
4-тогда следующий раздел символов (другой СИМВОЛЫ)
5-тогда END_ELEMENT
ОТМЕТЬТЕ: о пустом элементе (такой как <тег/>) сообщат с двумя отдельными событиями: START_ELEMENT, END_ELEMENT - Это сохраняет эквивалентность парсинга пустого элемента, чтобы <тегировать> </тег>. Этот метод бросит IllegalStateException, если его вызовут, после hasNext () возвращает false.
NoSuchElementException
- если это вызывают, когда hasNext () возвращает falseXMLStreamException
- если есть ошибка, обрабатывая базовый источник XMLXMLEvent
void require(int type, String namespaceURI, String localName) throws XMLStreamException
type
- тип событияnamespaceURI
- туры события, может быть нульlocalName
- localName события, может быть нуль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_ELEMENTNoSuchElementException
- если это вызывают, когда hasNext () возвращает falseboolean hasNext() throws XMLStreamException
XMLStreamException
- если есть фатальная ошибка, обнаруживающая следующее состояниеvoid close() throws XMLStreamException
XMLStreamException
- если есть ошибки, освобождая связанные ресурсыString getNamespaceURI(String prefix)
NOTE:The 'xml' префикс связывается как определено в
ОТМЕТЬТЕ: префикс 'xmlns' должен быть разрешен к следующему пространству имен
prefix
- Префикс к поиску, возможно, не нульIllegalArgumentException
- если префикс является нулемboolean isStartElement()
boolean isEndElement()
boolean isCharacters()
boolean isWhiteSpace()
String getAttributeValue(String namespaceURI, String localName)
namespaceURI
- пространство имен атрибутаlocalName
- локальное имя атрибута, не может быть нульIllegalStateException
- если это не START_ELEMENT или АТРИБУТint getAttributeCount()
IllegalStateException
- если это не START_ELEMENT или АТРИБУТQName getAttributeName(int index)
index
- позиция атрибутаIllegalStateException
- если это не START_ELEMENT или АТРИБУТString getAttributeNamespace(int index)
index
- позиция атрибутаIllegalStateException
- если это не START_ELEMENT или АТРИБУТString getAttributeLocalName(int index)
index
- позиция атрибутаIllegalStateException
- если это не START_ELEMENT или АТРИБУТString getAttributePrefix(int index)
index
- позиция атрибутаIllegalStateException
- если это не START_ELEMENT или АТРИБУТString getAttributeType(int index)
index
- позиция атрибутаIllegalStateException
- если это не START_ELEMENT или АТРИБУТString getAttributeValue(int index)
index
- позиция атрибутаIllegalStateException
- если это не START_ELEMENT или АТРИБУТboolean isAttributeSpecified(int index)
index
- позиция атрибутаIllegalStateException
- если это не START_ELEMENT или АТРИБУТint getNamespaceCount()
IllegalStateException
- если это не START_ELEMENT, END_ELEMENT или ПРОСТРАНСТВО ИМЕНString getNamespacePrefix(int index)
index
- позиция объявления пространства именIllegalStateException
- если это не START_ELEMENT, END_ELEMENT или ПРОСТРАНСТВО ИМЕНString getNamespaceURI(int index)
index
- позиция объявления пространства именIllegalStateException
- если это не START_ELEMENT, END_ELEMENT или ПРОСТРАНСТВО ИМЕН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;
}
XMLStreamException may be thrown if there are any XML errors in the underlying source. The "targetStart" argument must be greater than or equal to 0 and less than the length of "target", Length must be greater than 0 and "targetStart + length" must be less than or equal to length of "target".sourceStart
- the index of the first character in the source array to copytarget
- the destination arraytargetStart
- the start offset in the target arraylength
- the number of characters to copyXMLStreamException
- if the underlying XML source is not well-formedIndexOutOfBoundsException
- if targetStart < 0 or > than the length of targetIndexOutOfBoundsException
- if length < 0 or targetStart + length > length of targetUnsupportedOperationException
- if this method is not supportedNullPointerException
- is if target is nullint getTextStart()
IllegalStateException
- if this state is not a valid text state.int getTextLength()
IllegalStateException
- if this state is not a valid text state.String getEncoding()
boolean hasText()
Location getLocation()
QName getName()
IllegalStateException
- if this is not a START_ELEMENT or END_ELEMENTString getLocalName()
IllegalStateException
- if this not a START_ELEMENT, END_ELEMENT or ENTITY_REFERENCEboolean hasName()
String getNamespaceURI()
String getPrefix()
String getVersion()
boolean isStandalone()
boolean standaloneSet()
String getCharacterEncodingScheme()
String getPITarget()
String getPIData()
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.
DRAFT ea-b92