У меня возникла проблема при разборе XML с вложенным разделом CDATA. Раздел CDATA выглядит следующим образом:
<![CDATA[*** some text
[ ! <![CDATA[some text]]> ! ]
<![CDATA[some text]]>
]]>
Когда этот тип данных появляется в теге XML, он выдает ошибку при синтаксическом анализе XML, поскольку есть два закрывающих тега]]>. Кто-нибудь может посоветовать мне, что делать или от какого персонажа мне нужно сбежать, чтобы это сработало? Я использую Java1.8.
Фактически, какое-то другое приложение анализирует XML, и это Oracle ESB. Но даже когда я вставляю это в Блокнот и пытаюсь украсить XML, он показывает, что это недействительный XML. Он работает, когда я удаляю один]]> конечный тег.
См. Обходной путь в en.wikipedia.org/wiki/CDATA#Nesting.
@GyroGearless - Спасибо, сработало!
Причина, по которой у вас возникают проблемы с синтаксическим анализом этого ввода, заключается в том, что это не XML. Вам нужно выяснить, какая программа генерирует этот не-XML, и исправить это.
Если вы генерируете XML, то всякий раз, когда вы создаете текстовый узел, который может содержать последовательность ]]>
(независимо от того, представляет ли он конец вложенного раздела CDATA), вам нужно как-то его избежать. Многие люди выбирают путь наименьшего сопротивления и просто избегают >
как >
, где бы он ни встречался, но технически это необходимо, только если >
предшествует ]]
.
Как вы разбираете XML? SAX, StAX, DOM, что-то еще? Вы можете показать нам минимальную программу, которая генерирует эту ошибку?