def76
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Спасибо, но я здесь нашел парсер предназначенный как раз для работы с службой выдачи курсов валют ЦБ: Цитата: <?php /** * @version 1.0 * @package Curs * @copyright © 2007 Alexei Makhov * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL */ //------------------------------------------------------------------------- //defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' ); $curs = array(); $currentCurs = null; $index = null; function saxStartElement($parser,$name,$attrs) { global $currentCurs,$index; switch($name) { case 'ValCurs': $curs = array(); $currentCurs = array(); if (in_array('date',array_keys($attrs))) $currentCurs['date'] = $attrs['date']; break; case 'Valute': $currentCurs = array(); if (in_array('ID',array_keys($attrs))) $currentCurs['ID'] = $attrs['ID']; break; case 'Name': $currentCurs = array(); break; case 'Value': $currentCurs = array(); default: $index = $name; break; }; } function saxEndElement($parser,$name) { global $curs,$currentCurs,$index; if ((is_array($currentCurs)) && ($name=='Valute')) { $curs[] = $currentCurs; $currentCurs = null; }; $index = null; } function saxCharacterData($parser,$data) { global $currentCurs,$index; if ((is_array($currentCurs)) && ($index)) $currentCurs[$index] = $data; } $parser = xml_parser_create(); xml_set_element_handler($parser,'saxStartElement','saxEndElement'); xml_set_character_data_handler($parser,'saxCharacterData'); xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,false); $file= file("http://www.cbr.ru/scripts/XML_daily.asp"); $xml = join('',$file); if (!xml_parse($parser,$xml,true)) { die(sprintf('Ошибка XML: %s в строке %d', xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser))); } xml_parser_free($parser); //------------------------------------------------------------------------ // Доллар - 5-ый элемент массива curs, Евро - 6-ой элемент. $dollar=$curs['4']['Value']*1.02; $euro=$curs['5']['Value']*1.02; //------------------------------------------------------------------------ echo "<table width=\"100%\" border=\"0\"> <tr> <td nowrap background=\"/images/mod_middle.gif\"><div align=\"center\"><img src=\"/images/mod_top.gif\" width=\"100%\" height=\"43\"><br> USD <b>$dollar</b> <br> EUR <b>$euro</b> <br> <img src=\"/images/mod_bottom.gif\" width=\"100%\" height=\"70\"></div></td> </tr> </table>"; ?> | вот только не могу никак завести его. при после запуска скрипт выдает вот такую ошибку "Ошибка XML: no element found в строке 1", хотя сам XML код вроде в порядке: Цитата: <?xml version="1.0" encoding="windows-1251" ?> <ValCurs Date="18.09.2007" name="Foreign Currency Market"> <Valute ID="R01010"> <NumCode>036</NumCode> <CharCode>AUD</CharCode> <Nominal>1</Nominal> <Name>Австралийский доллар</Name> <Value>21,3697</Value> </Valute> <Valute ID="R01035"> <NumCode>826</NumCode> <CharCode>GBP</CharCode> <Nominal>1</Nominal> <Name>Фунт стерлингов Соединенного Королевства</Name> <Value>50,7534</Value> </Valute> <Valute ID="R01090"> <NumCode>974</NumCode> <CharCode>BYR</CharCode> <Nominal>1000</Nominal> <Name>Белорусских рублей</Name> <Value>11,7705</Value> </Valute> <Valute ID="R01215"> <NumCode>208</NumCode> <CharCode>DKK</CharCode> <Nominal>10</Nominal> <Name>Датских крон</Name> <Value>47,1712</Value> </Valute> ................. | Не подскажешь в чем может быть причина? |