У меня есть код для извлечения символов из синтаксического анализатора StAX с использованием eventReader. Код выглядит так:
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, но это происходит последовательно. Отладка Я обнаружил, что это происходит во втором событии isCharacters, когда первое событие - CDATA. Похоже, что синтаксический анализатор потерял след команды CDATA во втором событии.
Так, кто-нибудь еще видел это? У кого-нибудь есть лучший обходной путь, чем просто зачистка]]> с конца моей строки? Я не нашел ничего существенного в Интернете или здесь.