Задать вопрос
@vit451

Почему возникает ошибка DOMDocument::loadXML(): Opening and ending tag mismatch: если xml валидный?

Добрый день.

Я не программист.

Есть сайт, на сайте работает отображение погоды.
Недавно это работать перестало.

В результате разбора выяснил, что погода берется из страницы xml.meteoservice.ru/export/gismeteo/point/146.xml
Эта страница загружается и затем парсится
При парсинге идет ошибка
Error while parsing data for "xml.meteoservice.ru/export/gismeteo/point/146.xml"
DOMDocument::loadXML(): Opening and ending tag mismatch: hr line 5 and body in Entity, line: 6

Вот кусок кода , где идет прерывание
$url = vsprintf('http://xml.meteoservice.ru/export/gismeteo/point/%s.xml', array($idCity));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);


try {
$dom = new DOMDocument();
$dom->strictErrorChecking = false;
$dom->loadXML($data);
$xml = simplexml_import_dom($dom);
} catch (Exception $e) {
print "Error while parsing data for \"{$url}\"\r\n";
print $e->getMessage() . "\r\n";
return false;
}

В результате гугления на тему DOMDocument::loadXML(): Opening and ending tag mismatch выяснилось , что это происходит если xml не валидный

Если содержимое страницы https://www.meteoservice.ru/export/gismeteo/point/... скопировать в xml валидатор и проверить - то ошибок нет.

Куда копать дальше - непонятно. Прошу подсказать, что не так и почему возникает ошибка.
  • Вопрос задан
  • 2001 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
@krypt3r
Проверьте переменную $data, действительно ли приходит валидный XML. Проверьте, не возвращает ли curl ошибки
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы