Неустранимая ошибка: 1:1: содержимое не допускается в прологе
Я использую Java, и я пытаюсь получить XML-документ с некоторой ссылки http. Код, который я использую:
URL url = new URL(link);
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("GET");
connection.connect();
Document doc = null;
CountInputStream in = new CountInputStream(url.openStream());
doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(in);
Не обращайте внимания на CountInputStream
, это какой-то специальный класс, действующий как обычный поток ввода.
Используя вышеприведенный код, я иногда получал ошибку Fatal Error :1:1: Content is not allowed in prolog
. Я предполагаю, что это имеет какое-то отношение к плохому формату xml, но я понятия не имею, как его исправить.
Ответы
Ответ 1
Я возвращаю свой комментарий к ответу, поэтому его можно принять, и этот вопрос больше не остается без ответа.
Наиболее вероятной причиной этого является некорректный ответ, который включает символы перед начальным <?xml …>
. Поэтому, пожалуйста, взгляните на документ, переданный по HTTP, и исправьте это на стороне сервера.
Ответ 2
Есть некоторые странные символы (например, спецификация) или некоторые пробелы перед преамбулой XML (<?xml ...?>
)?
Ответ 3
Кто-то должен отметить комментарий Йоханнеса Вейса как ответ на этот вопрос. Именно поэтому XML-документы нельзя просто загружать в класс DOM Document.
http://en.wikipedia.org/wiki/Byte_order_mark