Текущее событие XMLEventReader - PullRequest
0 голосов
/ 28 февраля 2012

С XMLEventReader :

String getElementText()
Reads the content of a text-only element. 
Precondition: the current event is START_ELEMENT.
Postcondition: the current event is the corresponding END_ELEMENT.

Что такое "текущее" событие XMLEventReader, которое упоминается здесь?

Это событие, которое быловозвращенный последним вызовом для этого читателя:

a) до nextEvent() или
b) до peek()?

Как вы ответили на предыдущий вопросинтерпретировать этот фрагмент из листинга 2 из StAX'ing вверх XML :

while (reader.hasNext()) {
    XMLEvent event = reader.peek();
    if (event.isStartElement()) {
        StartElement start = event.asStartElement();
        if (ICON.equals(start.getName())) {
            System.out.println(reader.getElementText());
            break;
        }
    }
    reader.nextEvent();
}

Я сталкиваюсь с ParseError: parser must be on START_ELEMENT to read next text.

1 Ответ

1 голос
/ 09 марта 2012

Обратите внимание, что .peek() не читает из потока.Документация для .peek() гласит:

Проверьте следующее XMLEvent, не считывая его из потока.Возвращает ноль, если поток имеет EOF или больше не имеет XMLEvents.Вызов peek() будет равен следующему возврату next().

Таким образом, позиция вашего указателя не меняется.Следовательно, вы, вероятно, не на START_ELEMENT, но, скорее всего, на START_DOCUMENT.Пожалуйста, позвоните .nextEvent() вместо .peek(), это должно заставить его работать.

Удачи, Макс

...