Используйте simplexml для обработки данных Atom. Многие блоги используют Atom для вывода данных, но Atom использует пространство имен, поэтому теперь вы должны указать универсальный идентификатор ресурса (URI) пространства имен при запросе именованных элементов и локальных имен. Еще один момент: метод xpath для simplexml не может. напрямую запросить это дерево XML.
Начиная с версии PHP 5.1, SimpleXML может использовать запросы XPath непосредственно к документам пространства имен. Как обычно, пути расположения XPath должны использовать префикс пространства имен, даже если искомый документ использует пространство имен по умолчанию. Функция RegisterXPathNamespace() связывает префикс с URL-адресом пространства имен, используемым в последующих запросах.
Ниже приведен пример использования XPath для запроса элемента заголовка атомного документа:
ОБЫЧНЫЙ ТЕКСТ.
КОД:
$atom = simplexml_load_file('http://www.ooso.net/index.php/feed/atom');
$atom->registerXPathNamespace('atom','http://www.w3.org/2005/Atom');
$titles = $atom->xpath('//atom:title');
foreach($title как $title)
echo"<h2>". $title ."</h2>";
Используйте simplexml для обработки данных RSS
Wordpress может выводить источники данных rss2, а также есть несколько других пространств имен, например dc. Пример использования simplexml для анализа rss2:
ОБЫЧНЫЙ ТЕКСТ
PHP:
$ns=массив(
'content'=>'http://purl.org/rss/1.0/modules/content/',
'wfw'=>'http://wellformedweb.org/CommentAPI/',
'dc'=>'http://purl.org/dc/elements/1.1/'
);
$articles=массив();
// шаг 1: Получить фид
$blogUrl='http://www.ooso.net/index.php/feed/rss2';
$xml= simplexml_load_url($blogUrl);
// шаг 2: получаем метаданные канала
$канал=массив();
$channel['title'] =$xml->channel->title;
$channel['link'] =$xml->канал->ссылка;
$channel['description']=$xml->канал->описание;
$channel['pubDate'] =$xml->pubDate;
$channel['timestamp'] =strtotime($xml->pubDate);
$channel['generator'] =$xml->генератор;
$channel['language'] =$xml->language;
// шаг 3: Получите статьи
foreach($xml->channel->itemas$item){
$статья=массив();
$article['channel']=$блог;
$article['title']=$item->title;
$article['link']=$item->ссылка;
$article['comments']=$item->комментарии;
$article['pubDate']=$item->pubDate;
$article['timestamp']=strtotime($item->pubDate);
$article['description']=(строка)trim($item->описание);
$article['isPermaLink']=$item->guid['isPermaLink'];
// получаем данные, хранящиеся в пространствах имен
$content=$item->children($ns['content']);
$dc =$item->дети($ns['dc']);
$wfw =$item->дети($ns['wfw']);
$article['creator']=(string)$dc->creator;
foreach($dc->subjectas$subject)
$article['subject'][]=(строка)$subject;
$article['content']=(строка)trim($content->encoded);
$article['commentRss']=$wfw->commentRss;
// добавляем эту статью в список
$articles[$article['timestamp']]=$article;
}
В этом примере используйте метод Children для получения данных в пространстве имен:
PLAIN TEXT.
PHP:
$dc =$item->дети($ns['dc']);