miv-men
@miv-men
Фронт и бэк

Почему фид не открывается как xml?

Здравствуйте.

Фиды с товарами генерируем через стандартный функционал 1с-Битрикса.

Фиды обновляются каждые 30 мин, чаще всего с ними все хорошо, но иногда php интерпритирует его как текст и при открытии файла клиенты сталкиваются с ошибками.
Фид пожно получить по этой ссылке. Сейчас проблема фиксируется.

Я сохранил версии когда файл открывается как xml и когда как текст. Я не нашел отличий в этих файлах.

На сервере фид лежит в формате php, но отдается как xml:
$disableReferers = false;
if (!isset($_GET["referer1"]) || strlen($_GET["referer1"])<=0) $_GET["referer1"] = "yandext";
$strReferer1 = htmlspecialchars($_GET["referer1"]);
if (!isset($_GET["referer2"]) || strlen($_GET["referer2"]) <= 0) $_GET["referer2"] = "";
$strReferer2 = htmlspecialchars($_GET["referer2"]);
header("Content-Type: text/xml; charset=windows-1251");
echo "<"."?xml version=\"1.0\" encoding=\"windows-1251\"?".">"?>
<!DOCTYPE yml_catalog SYSTEM "shops.dtd">
<yml_catalog date="2024-11-29 09:06">
<shop>
<name>wisell.ru</name>
<company>wisell.ru</company>
<url>https://wisell.ru</url>
<platform>1C-Bitrix</platform>
<currencies>
<currency id="RUB" rate="1" />
// ... ...


Помогите разобраться в чем проблема. Спасибо.
  • Вопрос задан
  • 125 просмотров
Пригласить эксперта
Ответы на вопрос 1
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
1. Гуглим simplexml_load_string ошибки
2. Открываем страницу https://www.php.net/manual/ru/simplexml.examples-e...
3. Берём с неё код и немного модицифируем

libxml_use_internal_errors(true);

$sXML = download_page($url);
$xml = simplexml_load_string($sXML);

if ($xml === false) {
    throw new RuntimeException(
        "XML parsing errors: ". implode("", array_column(libxml_get_errors(), 'message'))
    );
}


Смотрим ошибки, исправляем.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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