I WonT To BeLiVe
Домашняя ] Вверх ]
All what you wont, Last update 12.08.07.


Upload

In Da Forum форум сайта смотрим тут


Новости Сайта

12.08.07 Доработан дизайн.


03.07.07 Добавлены разделы.

02.07.07 Новый дизайн.

22.11.06 Обновление.

10.07.06 Форум упал.

20.06.06 Новый форум.

17.06.06 Форум удален.
 

10.06.06 Новый дизайн.


________________
Происшествия
________________
Предложения и пожелания,нашли неработающую ссылку?

Напишите об этом Администратору
Спасибо !!!
 

 

Простой PHP парсер XML

Здесь я хочу затронуть очень актуальную на данный момент тему - разбор XML файлов. Почему то в сети понятного мануала на эту тему нет (а может я просто плохо искал =). Так что я решил написать, так сказать пособие для чайников по парсингу XML на языке PHP. Все предложения и пожелания просьба отправлять на емейл или писать в форум Сам код, представленный ниже, снабжен подробными комментариями, так что, я надеюсь, все всем будет понятно.
php
возьмем в качестве примера - новости с сайта МТС. Пусть там формат RSS,
но без разницы rss - это тот же XML
$link = httpwww.mts.runewsrss;
$depth = array(); глубина вложенных тегов

функции startElement, endElement и characterData определяются программером.
В них описано что делать с открывающим тегом, закрывающим и данными между ними соответсвенно.
function startElement($parser, $name, $attrs)
{
global $depth,$intag,$dist; $intag - внутри ли тега мы находимся. $dist (data exist) -
есть ли между тегов данные.
$dist=0;
if($intag==1) echo br; если в теге, то новая строка.
for ($i = 0; $i $depth[$parser]; $i++) отступ для наглядности
echo font color=ffffff$ifont;
echo [$name];
$depth[$parser]++;
$intag=1; - теперь уже точно в теге.
}

function endElement($parser, $name)
{
global $depth,$intag,$dist;
$depth[$parser]--;
if ($dist==0) если нет данных, то делаем отступ, соответсвующий глубине (для наглядности)
{
for ($i = 0; $i $depth[$parser]; $i++)
echo font color=ffffff$ifont;
}
$intag=0; закрылся тег
$dist=0; и данные
echo [$name]br;
}

function characterData($parser, $data)
{
global $dist,$intag;
echo font color=ff0000$datafont;
if ($intag ==1) если в теге, то есть данные.
$dist=1;
}

создаем парсер
$xml_parser = xml_parser_create();
определяем функции открывающего и закрывающего тегов
xml_set_element_handler($xml_parser, startElement, endElement);
и данных
xml_set_character_data_handler($xml_parser, characterData);
отключаем включенный по умолчанию верхний регистр
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, false);

if (!($fp = fopen($link, r))) die(could not open XML input);

собственно парсинг
while ($data = fread($fp, 4096))
{
if (!xml_parse($xml_parser, $data, feof($fp)))
die(sprintf(XML error %s at line %d, xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser)));
}
не забываем очистить парсер
xml_parser_free($xml_parser);



Автор Юферев Денис.
 

 


 

Новое из разделов:


Юмор:
Комментатор

 


Тюнинг:
Самое мощное авто

 


Web дизайн:
Хитрости

 


Мобильник:
Сервисные коды

 

 


История дня:

Звони по 0,01$


 

 
Hosted by uCoz