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