Ответы пользователя по тегу XML
  • Почему выводит 0 при парсинге Xml?

    nikivan
    @nikivan
    Создатель сайтов
    Во-первых, XML содержит ошибки (не закрыт atttoi и не открыт attributes). Правильный XML в вашем случае должен выглядеть так:

    <result>
    <ddd>dfgdf</ddd>
    <atttoi>
    <Anti-BrakeSystem>4-Wheel ABS</Anti-BrakeSystem>
    </atttoi>
    </result>


    Во-вторых, доступ к Anti-BrakeSystem необходимо осуществлять так:

    $AntiBrakeSystem = $xml_records->atttoi->{'Anti-BrakeSystem'};


    Курите маны: php.net/manual/ru/simplexml.examples-basic.php
    Ответ написан
    Комментировать
  • Обработка xml файла, получение погоды, в чем ошибка?

    nikivan
    @nikivan
    Создатель сайтов
    Я думаю, причина заключается в особенностях работы сервера Яндекса. Вероятно, он «сбрасывает» некоторые запросы. Попробуйте «биться» так, у меня получилось:

    <?php
    
    // Заголовок с кодировкой
    header('Content-Type: text/html; charset=UTF-8');
    
    // Интересующий нас XML-файл
    $xml_file = 'http://export.yandex.ru/weather-ng/forecasts/72483.xml';
    
    // Количество попыток получить и обработать этот файл
    $number_of_attempts = 0;
    
    do
    {
        // Выводим номер попытки
        echo 'Attempt = ', $number_of_attempts, '<br>';
        
        // Осуществляем попытку получить и обработать XML-файл
        $xml = simplexml_load_file($xml_file);
        
        usleep(100);
    }
    while (!$xml && ++$number_of_attempts <= 50); // Делаем пока не загрузили или пока количество попыток не будет превышать 50
    
    // Итак, если XML-файл не обработан - пишем об этом
    if (!$xml)
    {
        exit('Could not load XML<br>');
    }
    
    // Иначе: Получаем температуру
    $temp = $xml->fact->temperature;
    
    // Форматируем её как нам нужно
    if ($temp > 0) {
        $temp = '+' . $temp;
    }
    
    // И выводим
    echo '<strong>Погода: ', $temp, ' °C</strong>';


    Можно сделать это же через cURL (изначально я так и делал, но потом решил, что вам он может не понадобиться).
    Ответ написан
    4 комментария