Я взял на себя обслуживание приложения, которое использует синтаксический анализатор stax, чтобы разбить XML-файл с множеством записей на отдельные записи для дальнейшей обработки. На мой взгляд, использование этого парсера для этой цели излишне, но я этого не писал.
Приложение теперь обнаруживает такие данные:
<name><![CDATA[A & B]]></name>
Наш текущий синтаксический анализатор возвращает событие для начального тега 'name'. Следующее событие - это символьное событие со значением «A & B».
На веб-странице Sun я нашел следующее:
Сообщение о событиях CDATA Javax.xml.stream.XMLStreamReader, реализованный в Streaming XML Parser, не сообщает о событиях CDATA. Если у вас есть приложение, которому необходимо получать такие события, настройте XMLInputFactory, чтобы установить следующее свойство report-cdata-event, зависящее от реализации:
XMLInputFactory factory = XMLInptuFactory.newInstance();
factory.setProperty("report-cdata-event", Boolean.TRUE);
Используемый нами синтаксический анализатор не поддерживает свойство 'report-cdata-event'.
Я хочу найти синтаксический анализатор, который сообщит о таком событии, чтобы мне не приходилось проверять каждый фрагмент текста на наличие символов, которые должны быть защищены конструкцией CDATA.
ОБНОВЛЕНИЕ:
После публикации этого я просмотрел некоторые из связанных вопросов и упомянул свойство isCoalescing; для записи устанавливается значение FALSE.