Что означает исключение org.apache.xmlbeans.XmlException с сообщением «Неожиданный элемент: CDATA»? - PullRequest
2 голосов
/ 10 сентября 2009

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

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

Ответы [ 3 ]

1 голос
/ 18 августа 2010

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

1 голос
/ 09 мая 2014

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

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

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

Сообщение об ошибке в XMLBean Jira

1 голос
/ 10 сентября 2009

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

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

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

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

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

...