'Содержание не доступно в прологе' - PullRequest
0 голосов
/ 15 апреля 2011

Код находится в конце поста. Произвел поиск в Google, и похоже, что эта ошибка возникает, если у вас есть данные до корневого тега данных в вашем XML-файле. Я посмотрел на поступающий поток байтов, который начинается с 60 или «<». Так что в начале файла нет какой-то странной Byte-Order-Mark или чего-то еще. </p>

Что еще может быть причиной этой проблемы?

Спасибо, ТАК!

 XMLReader r = XMLReaderFactory.createXMLReader();
 SAXSource source = new SAXSource(new NamespaceFilter(r), new InputSource(is));

 validator.validate(source, null);

Ответы [ 2 ]

0 голосов
/ 17 апреля 2011

Я видел эту проблему при использовании сжатия. несжатый поток иногда получает дополнительный символ.

0 голосов
/ 17 апреля 2011

За пределами корневого элемента допускается только декларация XML, комментарии и инструкции по обработке. Таким образом, возможно, что документ запускается правильно, но перед корневым элементом есть еще какая-то хрень (без пробелов). Спецификации могут действительно вызывать эту проблему, если парсер не знает, как с этим справиться, но, возможно, это не тот случай.

Вы могли бы также попробовать попробовать синтаксический анализатор Stax, такой как Woodstox, поскольку, хотя он, вероятно, столкнется с той же самой проблемой (какой бы она ни была), он должен иметь возможность дать вам немного больше информации о реальной проблеме - полученное вами сообщение слишком редкое, парсер ленится; оно должно как минимум указывать местоположение (относительно начала файла).

...