Что означает исключение org.apache.xmlbeans.XmlException с сообщением "Неожиданный элемент: CDATA"?

Я пытаюсь проанализировать и загрузить XML-документ, однако я получаю это исключение, когда вызываю метод parse для класса, расширяющего XmlObject. К сожалению, это не дает мне представления о том, какой элемент является неожиданным, что является моей проблемой.

Я не могу поделиться кодом для этого, но я могу попытаться предоставить больше информации, если это необходимо.

3 ответа

Решение

Не имея возможности поделиться кодом или входными данными, вы можете рассмотреть следующий подход. Боюсь, это очень распространенный дихотомический подход к диагностике, и, возможно, вы с готовностью начали его...

Попробуйте уменьшить размер входного XML, удалив его части, гарантируя, что базовый XML-документ остается правильно сформированным и, возможно, допустимым (если в настройках вашего синтаксического анализатора требуется достоверность). Если вы сохраняете действительность, для этого может потребоваться изменить [копию] Схемы (DTD или другое), поскольку обязательные элементы могут быть удалены во время подхода "пробуй и пробуй"... Кстати, сообщение об ошибке, похоже, больше подсказывает проблема проверки, которая является основной проблемой правильности утверждения.

Если у человека нет особой догадки относительно области, вызывающей жалобу анализатора, мы обычно удаляем (или повторно добавляем, когда все начинает работать) около половины того, что было ранее вырезано или повторно добавлено.

Вы также можете начать с попытки создания в основном пустого файла, чтобы утверждать, что парсер вообще работает... Возникает идея "разделить на преобладание": проблема во входных данных XML или в парсере? (помня, что может быть две проблемы, одна на входе и одна на синтаксическом анализаторе, и что такие проблемы могут даже не быть связаны...)

Извините за базовые методы диагностики, с которыми вы, возможно, хорошо владеете...

Вы должны проверить аргументы, которые вы передаете методу parse(); Если вы передаете строку для анализа, файла или входного потока соответственно (File/InputStream/String) и т. Д.

Исключение вызвано длиной файла XML. Если вы добавите или удалите один символ из файла, анализатор будет успешным.

Проблема возникает в сторонней библиотеке PiccoloLexer, на которую опирается XMLBeans. Это было исправлено в ревизии 959082, но не было применено к банке 2,5 штуки.

XMLBeans - проблема с файлами XML, если длина составляет ровно 8193 байта

О проблеме сообщили в XMLBean Jira

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