X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость ( Вход | Регистрация )

Открыть тему
Тема закрыта
> Как вытащить данные из XML?
happyhand
happyhand
Topic Starter сообщение 27.1.2010, 11:31; Ответить: happyhand
Сообщение #1


Вот имеется такой файл:

<FORECAST day="27" month="01" year="2010" hour="02" tod="0" predict="0" weekday="4">
<PHENOMENA cloudiness="1" precipitation="10" rpower="0" spower="0"/>
<PRESSURE max="765" min="763"/>
<TEMPERATURE max="-21" min="-19"/>
<WIND min="1" max="3" direction="4"/>
<RELWET max="100" min="98"/>
<HEAT min="-24" max="-22"/>
</FORECAST>

Нужно вытащить поотдельности дату, облачность (cloudiness="1"), ну и т.д. Видимо, нужно при помощи регулярных выражений это сделать. Подскажите, как?
В принципе, сейчас вытаскивается так:
[PHP]
$res = '';

function startElement($parser, $name, $attrs) {
global $res;
switch ($name) {
case 'TOWN':
$res .="(".$attrs['LATITUDE']." ' ";
$res .= $attrs['LONGITUDE']." '')<br />";
break;
case 'FORECAST':
$res .=$attrs['DAY'].'.'.$attrs['MONTH'].'.'.
$attrs['YEAR'].' в '.$attrs['HOUR'].'-00 от ';
break;
case 'TEMPERATURE':
$res .= '<strong>'.$attrs['MIN'].'°</strong> до <strong>'.
$attrs['MAX'].'°</strong><br />';
break;
case 'PHENOMENA':
$res .= '<strong>Облачность '.$attrs['CLOUDINESS'].'</strong>';
break;

}
}

function endElement($parser, $name) {}

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://informer.gismeteo.ru/xml/34504_1.xml');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_HEADER, 0);

$data = curl_exec($ch);

curl_close($ch);

$XMLparser = xml_parser_create();
xml_set_element_handler($XMLparser, 'startElement', 'endElement');
if (!xml_parse($XMLparser, $data)) {
die('Ошибка обработки данных');
}
xml_parser_free($XMLparser);
echo $res;
?>
[/PHP]
Но дело в том, что здесь весь результат выводится общей кучей:
26.01.2010 в 02-00 от -20° до -22°, а нужно каждый элемент отдельно.
Другой скрипт делает то, что нужно, но берёт данные из XML-файла другого формата и я его не могу приспособить под этот.
[PHP]
$fh = @fopen('http://bank-ua.com/export/currrate.xml','rt');
if($fh)
{
while(!feof($fh)) @$data.=fread($fh,4096);
fclose($fh);
preg_match('#<char3>USD</char3>.*?<rate>(.*?)</rate>#si',$data,$data);
echo'100 USD = '.@$data[1].' грн.';
}
else echo'Текущий курс USD не доступен';
[/PHP]
А XML такой:

<char3>USD</char3>
<rate>800.8400</rate>

Вот как в этот скрипт впихнуть данные из первого XML-файла?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Webmaster_hb
Webmaster_hb
сообщение 27.1.2010, 12:20; Ответить: Webmaster_hb
Сообщение #2


sergey-g, лучше написать самому
используйте SimpleXML встроенный в PHP
который позволяет легко читать любые XML

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Атака клонов! Или как бороться с мультиаккаунтами.
113 Pelican_Program 28516 Сегодня, 16:01
автор: Pelican_Program
Горячая тема (нет новых ответов) Как мы профукали форум?
67 wep 6842 Сегодня, 12:59
автор: Mukis
Открытая тема (нет новых ответов) Как избавиться от ссылок с прогонов?
15 Coffee 645 Вчера, 17:20
автор: LigaGiga
Открытая тема (нет новых ответов) ТОП-5 инвестиционных инструментов, от которых новичку нужно бежать, как от огня
zen.yandex.ru
8 MaxChemist 424 22.11.2020, 21:45
автор: FIvYur
Открытая тема (нет новых ответов) Как закрепить фон к блоку сайта?
5 stixia007 631 22.11.2020, 0:46
автор: kwork


 



RSS Текстовая версия Сейчас: 24.11.2020, 16:03
Дизайн