我有使用eventReader从StAX解析器中获取字符的代码 . 代码如下所示:
private String getNextCharacters(XMLEventReader eventReader) throws XMLStreamException {
StringBuilder characters = new StringBuilder();
XMLEvent event = eventReader.nextEvent();
String data = event.asCharacters().getData();
characters.append(data);
while (eventReader.peek() != null && eventReader.peek().isCharacters()) {
event = eventReader.nextEvent();
data = event.asCharacters().getData();
characters.append(data);
}
return characters.toString();
}
while循环是因为偶尔asCharacters不会在相邻的isCharacters事件之间合并 . 这似乎与设置或不设置的is_coalescing标志无关 . 这似乎是一个合理的解决方法,但它似乎驱动了次要的错误 . 偶尔我看到]>>附加到我的字符串 . 这种情况非常罕见 - 大约有5000行XML,但它始终如一 . 调试我发现当第一个事件是CDATA时,它发生在第二个isCharacters事件中 . 解析器似乎在第二个事件中失去了对CDATA指令的跟踪 .
那么,还有其他人看过这个吗?有没有人有一个更好的解决方法而不是简单地剥离]]>在我的字符串末尾?我在网上或这里找不到任何重要信息 .
1 回答
代替
你可以去
HTH,Max