За последние 24 часа нас посетили 32446 программистов и 1753 робота. Сейчас ищут 877 программистов ...

XML

Тема в разделе "Прочие вопросы по PHP", создана пользователем rustoke, 8 сен 2015.

  1. rustoke

    rustoke Новичок

    С нами с:
    20 сен 2014
    Сообщения:
    145
    Симпатии:
    0
    Как из XML выбрать данные только из FORECAST у которого tod="2"
    Код (Text):
    1.  
    2. $xml = '31510_1.xml';
    3. $rss = simplexml_load_file($xml);
    4. foreach ($rss->REPORT->TOWN as $fact)
    5. {
    6.     $temp = $fact->FORECAST->TEMPERATURE['min']; //выводим температуру
    7.     $tod = $fact->FORECAST['tod']; //выводим время суток
    8. }
    9.  
    10. $h = date('G');
    11. $tod1 = ($h > 6) ? 2: 0;
    12.  
    13. echo $tod." _ ".$tod1." _ ";
    Добавлено спустя 8 минут 32 секунды:
    Код (Text):
    1.  
    2. <MMWEATHER>
    3. <REPORT type="frc3">
    4. <TOWN index="31510" sname="%C1%EB%E0%E3%EE%E2%E5%F9%E5%ED%F1%EA" latitude="50" longitude="127">
    5. <FORECAST day="27" month="05" year="2015" hour="21" tod="3" predict="0" weekday="4">
    6. <PHENOMENA cloudiness="0" precipitation="10" rpower="0" spower="0"/>
    7. <PRESSURE max="742" min="740"/>
    8. <TEMPERATURE max="18" min="16"/>
    9. <WIND min="1" max="3" direction="4"/>
    10. <RELWET max="57" min="55"/>
    11. <HEAT min="16" max="18"/>
    12. </FORECAST>
    13. <FORECAST day="28" month="05" year="2015" hour="03" tod="0" predict="0" weekday="5">
    14. <PHENOMENA cloudiness="0" precipitation="10" rpower="0" spower="0"/>
    15. <PRESSURE max="741" min="739"/>
    16. <TEMPERATURE max="15" min="13"/>
    17. <WIND min="2" max="4" direction="5"/>
    18. <RELWET max="62" min="60"/>
    19. <HEAT min="13" max="15"/>
    20. </FORECAST>
    21. <FORECAST day="28" month="05" year="2015" hour="09" tod="1" predict="0" weekday="5">
    22. <PHENOMENA cloudiness="0" precipitation="10" rpower="0" spower="0"/>
    23. <PRESSURE max="740" min="738"/>
    24. <TEMPERATURE max="21" min="19"/>
    25. <WIND min="1" max="3" direction="4"/>
    26. <RELWET max="54" min="52"/>
    27. <HEAT min="18" max="20"/>
    28. </FORECAST>
    29. <FORECAST day="28" month="05" year="2015" hour="15" tod="2" predict="0" weekday="5">
    30. <PHENOMENA cloudiness="1" precipitation="10" rpower="0" spower="0"/>
    31. <PRESSURE max="738" min="736"/>
    32. <TEMPERATURE max="26" min="24"/>
    33. <WIND min="2" max="4" direction="4"/>
    34. <RELWET max="33" min="31"/>
    35. <HEAT min="23" max="25"/>
    36. </FORECAST>
    37. </TOWN>
    38. </REPORT>
    39. </MMWEATHER>
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Код (PHP):
    1. <?php
    2. $xml = '31510_1.xml';
    3. $rss = simplexml_load_file($xml);
    4. foreach ($rss->REPORT->TOWN[0] as $forecast)
    5. {
    6.     if ((string) $forecast['tod'] === '2') {
    7.         foreach ($forecast as $key => $val) {
    8.             $val = (array) $val;
    9.             echo $key . ' = ' . var_export($val['@attributes'], true) . "\n";
    10.         }
    11.     }
    12. }
    13.  
    выведет:
    Код (Text):
    1. PHENOMENA = array (
    2.   'cloudiness' => '1',
    3.   'precipitation' => '10',
    4.   'rpower' => '0',
    5.   'spower' => '0',
    6. )
    7. PRESSURE = array (
    8.   'max' => '738',
    9.   'min' => '736',
    10. )
    11. TEMPERATURE = array (
    12.   'max' => '26',
    13.   'min' => '24',
    14. )
    15. WIND = array (
    16.   'min' => '2',
    17.   'max' => '4',
    18.   'direction' => '4',
    19. )
    20. RELWET = array (
    21.   'max' => '33',
    22.   'min' => '31',
    23. )
    24. HEAT = array (
    25.   'min' => '23',
    26.   'max' => '25',
    27. )