Использование CURL и SimpleXML для парсинга внешнего xml-файла.


Рассмотрим использование CURL и SimpleXML для парсинга внешнего xml-файла и вывода его отдельных элементов. В качестве внешнего xml-файла возьмем rss-ленту новостей Яндекса http://news.yandex.ru/index.rss.

Первая задача — получить внешний файл (используем функцию CURL в PHP).

1
2
3
4
5
6
7
8
9
10
$url = "http://news.yandex.ru/index.rss";
$ch = curl_init();
// set url
curl_setopt($ch, CURLOPT_URL, $url);
//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// $output contains the output string
$output = curl_exec($ch);
// close curl resource to free up system resources
curl_close($ch);

Считываемый файл теперь находится у нас в строке $output. Преобразуем полученную строку данных в объект SimpleXML — это позволит легко получать доступ к данным через свойства объекта.

1
$items = simplexml_load_string($output);

Наш объект имеет вложенную структуру, но нас интересуют только элементы «item», которые расположены внутри элемента channel. Возьмем то, что нам нужно, отбросив лишнее:

1
$items = $items->channel;

Теперь с помощью конструкции foreach мы можем пройтись по каждому элементу (отдельной новости) и вывести его:

1
2
3
4
foreach ($items->item as $item) {
    echo "<a href='$item->link'>".$item->title."</a><br>";
    echo $item->description."<br>";
}

Больще параметров для curl_setopt в документации.

Объект SimpleXML можно получить непосредственно на основе загружаемого файла xml с помощью функции simplexml_load_file.





Другие посты

Категория: PHP-скрипты

Оставить комментарий