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


Свернуть

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

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Восстановление сайтов под сапу, к обсуждению как бизнеса
7 Wanna_play_Lineage2 230 Сегодня, 3:14
автор: MorKer
Горячая тема (нет новых ответов) Как вернуться к жене от любовницы
113 Fubuki 9575 Вчера, 19:07
автор: Latinos
Горячая тема (нет новых ответов) Как перестать толстеть?
188 DocAnton64 9372 Вчера, 9:16
автор: kuprum
Горячая тема (нет новых ответов) Как начать "в криптовалюты" с нуля?
77 Starpony 3007 30.11.2020, 20:08
автор: EvilGomel
Открытая тема (нет новых ответов) Как избавиться от ссылок с прогонов?
16 Coffee 850 30.11.2020, 1:11
автор: Vova_Digitalowl


 



RSS Текстовая версия Сейчас: 2.12.2020, 12:25
Дизайн