Невозможно проанализировать XML с вложенным разделом CDATA

У меня возникла проблема при разборе XML с вложенным разделом CDATA. Раздел CDATA выглядит следующим образом:

<![CDATA[*** some text

[ !  <![CDATA[some text]]>  ! ]

<![CDATA[some text]]>

]]>

Когда этот тип данных появляется в теге XML, он выдает ошибку при синтаксическом анализе XML, поскольку есть два закрывающих тега]]>. Кто-нибудь может посоветовать мне, что делать или от какого персонажа мне нужно сбежать, чтобы это сработало? Я использую Java1.8.

Как вы разбираете XML? SAX, StAX, DOM, что-то еще? Вы можете показать нам минимальную программу, которая генерирует эту ошибку?

Ralf Renz 10.08.2018 10:00

Фактически, какое-то другое приложение анализирует XML, и это Oracle ESB. Но даже когда я вставляю это в Блокнот и пытаюсь украсить XML, он показывает, что это недействительный XML. Он работает, когда я удаляю один]]> конечный тег.

Anirban 10.08.2018 10:04

См. Обходной путь в en.wikipedia.org/wiki/CDATA#Nesting.

Gyro Gearless 10.08.2018 10:16

@GyroGearless - Спасибо, сработало!

Anirban 10.08.2018 11:44
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
240
1

Ответы 1

Причина, по которой у вас возникают проблемы с синтаксическим анализом этого ввода, заключается в том, что это не XML. Вам нужно выяснить, какая программа генерирует этот не-XML, и исправить это.

Если вы генерируете XML, то всякий раз, когда вы создаете текстовый узел, который может содержать последовательность ]]> (независимо от того, представляет ли он конец вложенного раздела CDATA), вам нужно как-то его избежать. Многие люди выбирают путь наименьшего сопротивления и просто избегают > как &gt;, где бы он ни встречался, но технически это необходимо, только если > предшествует ]].

Другие вопросы по теме