Рассмотрим использование CURL и SimpleXML для парсинга внешнего xml-файла и вывода его отдельных элементов. В качестве внешнего xml-файла возьмем rss-ленту новостей Яндекса http://news.yandex.ru/index.rss.
Первая задача – получить внешний файл (используем функцию CURL в PHP).
$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 – это позволит легко получать доступ к данным через свойства объекта.
$items = simplexml_load_string($output);
Наш объект имеет вложенную структуру, но нас интересуют только элементы «item», которые расположены внутри элемента channel. Возьмем то, что нам нужно, отбросив лишнее:
$items = $items->channel;
Теперь с помощью конструкции foreach мы можем пройтись по каждому элементу (отдельной новости) и вывести его:
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.