Ошибка XML · syntax
Ожидался открывающий тег
Пришло не то — HTML-страница с ошибкой, JSON или обычный текст, отданные под XML-типом содержимого. Парсер не нашёл открывающего тега.
Start tag expected, '<' not found (line 1)Что это значит
Парсер не обнаружил открывающего тега там, где должен начинаться документ, потому что содержимое вообще не начинается с «<». На практике ответ — не XML: тело JSON, текстовая ошибка или трассировка стека, отданные с XML-типом содержимого.
Совершенно пустое тело даёт другое сообщение — «Document is empty». Здесь что-то пришло, просто это не XML.
Обычные причины
- Страница входа, капча или страница ошибки вместо API-ответа.
- Ответ 4xx или 5xx с HTML-телом, отданный без проверки кода состояния.
- BOM или пробелы перед началом документа при строгой проверке.
- Прокси или WAF, подменивший ответ своей страницей.
- Ответ, распакованный неверно, из-за чего вместо XML пришли двоичные данные.
Как исправить
- Логируйте первые 200 байт ответа перед разбором — обычно этого достаточно, чтобы увидеть причину.
- Проверяйте код состояния и Content-Type до того, как отдавать тело парсеру.
- Обрабатывайте «пришёл не XML» как отдельный случай: это проблема транспорта, а не документа.
- Убедитесь, что перенаправления следуют туда, куда вы ожидаете.
Та же ошибка в других парсерах
Разные парсеры, один и тот же дефект. Сообщения не переведены — вы искали именно их текст.
Xerces (Java)
Content is not allowed in prolog.expat (Python)
syntax error: line 1, column 0.NET System.Xml
Data at the root level is invalid. Line 1, position 1.Go encoding/xml
expected element type <urlset> but have <html>
До и после
Оба фрагмента проверяются тестами на настоящем парсере: первый выдаёт в точности сообщение выше, второй разбирается без ошибок.
{"error":"not_found","status":404}<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url><loc>https://example.com/</loc></url>
</urlset>