Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » простой парсер XML

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

def76

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Понадобилось добавить на сайт возможность просматривать котировки некоторых валют. Их очень удобно отдает сайт центробанка(http://www.cbr.ru/scripts/XML_daily.asp?d=0&VAL_NM_RQ=R01235), осталось только найти парсер XML, до этого никогда с XML не работал и сейчас реально горят сроки чтобы досконально разбираться с предназначенными для этого средствами PHP, поэтому посоветуйте, плз, какую-нибудь донельзя простую библиотечку или скрипт парсера XML. Спасибо

Всего записей: 42 | Зарегистр. 12-04-2006 | Отправлено: 22:09 16-09-2007
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
def76
эм...
www.php.net/xml
http://forum.ru-board.com/forum.cgi?action=filter&forum=31&filterby=topictitle&word=xml

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:16 16-09-2007
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>
.................

Не подскажешь в чем может быть причина?

Всего записей: 42 | Зарегистр. 12-04-2006 | Отправлено: 07:49 18-09-2007
def76

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Решил сам. Проблема была в том, что был включен safe mode на сераке, из-за этого внешние соединения не работали

Всего записей: 42 | Зарегистр. 12-04-2006 | Отправлено: 17:14 18-09-2007
mln141



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Немного изменилась таблица. Теперь правильно
$dollar=$curs['9']['Value'];
$euro=$curs['10']['Value'];

Всего записей: 86 | Зарегистр. 18-05-2005 | Отправлено: 11:09 12-08-2011
shalvins

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
нашел простой и понятный xml для котировок, мало ли кому пригодиться http://www.***.ru/vazhnoe/aktualnyj-fid-xml-kotirovok-valyut-dlya-sajta.html

Всего записей: 1 | Зарегистр. 17-12-2014 | Отправлено: 22:38 17-12-2014
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shalvins
просили парсер, а не ссылку на данные для xml

Всего записей: 15112 | Зарегистр. 20-09-2014 | Отправлено: 00:26 18-12-2014
aleksejsmir

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Гы, куда ж еще проще то? Гляньте здесь,
удобный парсер валют с ЦБ РФ на основе google chart:
http://masterpro.ws/padenie-rossijskogo-rublya-na-google-chart

Всего записей: 5 | Зарегистр. 11-07-2007 | Отправлено: 07:02 28-01-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
aleksejsmir

Код:
<div><?='Today (russian rouble):';?></div>

сразу говорит о том, что написавший не знает php

Всего записей: 15112 | Зарегистр. 20-09-2014 | Отправлено: 07:06 28-01-2015
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » простой парсер XML


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru