В этой статье мы рассмотрим написание простого RSS ридера. В первой части рассказа о SimpleXML SimpleXML – просто работаем с XML – Начало мы уже рассматривали как начать работу с SimpleXML.
Сегодня продолжим рассмотрение данного расширения.
Рассмотрим мы по шагам чтобы было понятно как вообще работать с данным расширение. Первое что нам нужно сделать, это собственно создать сам объект, вы можете использовать любой из рассмотренных ранее способов. Мы же будем использовать такой:
-
<?php
-
$sXML = @simplexml_load_file('http://blog.yousoft.ru/feed/');
-
?>
В этом коде нет ничего нового за исключением символ ‘@’ перед функцией, он необходим для отключения вывода предупреждений и сообщений об ошибках. Мы возьмем на себя обработку этих данных. Также функция simplexml_load_file возвращает или ссылку на созданный объект или логическое false. Следовательно нам необходимо проверить результат получения XML.
-
<?php
-
if (($sXML = @simplexml_load_file('http://blog.yousoft.ru/feed/'))===false){
-
echo "Ошибка получения XML.\n";
-
}else{
-
echo "XML уcпешно получен.\n";
-
}
-
?>
Обращаем ваше внимание на тройной знак равенства: ‘===’. Не будем вникать в подробности этого оператора, только заметим, что данный оператор сравнения требует по мимо равенства значений еще и равенство типов, то есть говоря другим языком в нашем условном операторе сравнение будет истина только тогда, когда результат функции будет иметь логический тип и значение false.
Можем запустить и посмотреть результат, если у вас не вывелась надпись «XML уcпешно получен.», внимательно проверьте код.
Далее воспользуемся функцией print_r(), чтобы посмотреть как будет выглядеть объект $sXML «изнутри».
-
<?php
-
if (($sXML = @simplexml_load_file('http://blog.yousoft.ru/feed/'))===false){
-
echo "Ошибка получения XML.\n";
-
}else{
-
echo "XML уcпешно получен.\n";
-
print_r($sXML);
-
}
-
?>
Если у вас вывелось что-то подобное указанному ниже, значит вы на правильном пути. (Здесь показано только начало вывода)
-
<?php
-
SimpleXMLElement Object
-
(
-
[@attributes] => Array
-
(
-
[version] => 2.0
-
)
-
-
[channel] => SimpleXMLElement Object
-
(
-
[title] => Blog YouSoft
-
[link] => http://blog.yousoft.ru
-
[description] => SimpleXMLElement Object
-
(
-
)
-
-
[lastBuildDate] => Sat, 10 Apr 2010 12:02:39 +0000
-
[generator] => http://wordpress.org/?v=2.9.2
-
[language] => en
-
[item] => Array
-
(
-
[0] => SimpleXMLElement Object
-
(
-
[title] => Выбираем и настраиваем хостинг на VDS/VPS серверах (Часть 1)
-
[link] => http://feedproxy.google.com/~r/yousoft/BLOG/~3/0qPZ-oeeEPo/
-
[comments] => http://blog.yousoft.ru/2010/04/10/vybiraem-i-nastraivaem-xosting-na-vdsvps-serverax-chast-1/#comments
-
[pubDate] => Fri, 09 Apr 2010 17:28:26 +0000
-
[category] => Array
-
?>
Мы видим, что XML файл успешно читается и даже парсится. Значит мы можем выбрать какие-либо данные. Давай определимся, что нам нужно получить название статьи (тэг title) и ссылку на эту статью (тэг link). Из вывода функции print_r() видим, что в переменая $sXML содержит свойство channel, которое в свою очередь содержит свойство item (которое нас интересует). Свойство item представляет собой массив элементов которые содержат необходимые нам данные:
-
<?php
-
if (($sXML = @simplexml_load_file('http://blog.yousoft.ru/feed/'))===false){
-
echo "Ошибка получения XML.\n";
-
}else{
-
//"XML уcпешно получен.\n";
-
foreach($sXML->channel->item as $key=>$item){
-
echo $item->title.' – '.$item->link."\n";
-
}
-
}
-
?>
Реализация получилась довольно простая и понятная: $sXML->channel->item – мы получаем сразу доступ к массиву с элементами. С помощью цикла foreach мы перебираем элементы и для каждого элемента выводим нужные нам свойства.
После прочтения данной статьи вы уже можете писать php скрипты для обработки большинства XML файлов, здесь мы не рассмотрели работу с атрибутами тэгов, но это оставим как домашнее задание или следующую публикацию.
Как обычно на последок, хочу сказать: не стесняйтесь оставлять комментарии и задавать вопросы, ведь во многом от вас зависит о чем будет написано в следующий раз..

Спасибо, статья понравилась!
Спасибо, статья понравилась! Пишите еще…
Спасибо за интересную статью! Все очень просто и понятно разобрано!
Полезно, спасибо!
А если будет другая структура XML файла?