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()
?
从上一个问题的答案中,您如何解释StAX'ing up XML的清单2中的此代码段:
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
。
答案 0 :(得分:1)
请注意,.peek()
未从流中读取。 .peek()
的文档说:
检查下一个
XMLEvent
而不从流中读取它。返回 如果流位于EOF
或不再有XMLEvents
,则返回null。打电话给peek()
将等于next()
的下一次返回。
因此,指针的位置不会改变。因此,您可能不在START_ELEMENT
,但最有可能在START_DOCUMENT
。请致电.nextEvent()
而不是.peek()
,这应该会让它发挥作用。