Skip to content


Zend Framework 常用模块(2)

1.Zend_Feed 这个玩意儿是个好东西!现在RSS流行,用他解析feed事半功倍
以下摘自API文档:
Zend_Feed提供了处理的 RSS 和 Atom Feed的功能。它提供了一套自然的方法用于 访问Feed元素、属性、和条目属性。 除此之外Zend_Feed还扩展提供了同样简单的方法 用于修改feed和条目的结构,并将结果转化成XML格式。不久的将来这些扩展可能会被 Atom Publishig Protocol(AtomPP)所支持。 Zend_Feed由一个Zend_Feed基类、一个Zend_Feed_Abstract抽象类以及一个用于表示Feed和条目的Zend_Feed_Entry_Abstract基类组成。这些类封装了 RSS 和 Atom 的feed和条目特性的,提供了一套自然的方法使他们用起来变得异常简单。
再来看一个例子:

getMessage()}\n”;
exit;
}// 初始化保存 channel 数据的数组
$channel = array( ‘title’ => $slashdotRss->title(), ‘
link’ => $slashdotRss->link(),
‘description’ => $slashdotRss->description(),
‘items’ => array() );
// 循环获得channel的item并存储到相关数组中
foreach ($slashdotRss as $item) {
$channel['items'][] = array( ‘title’ => $item->title(),
‘link’ => $item->link(),
‘description’ => $item->description());
}?>

Zend_Feed导入Feed的方法总结

// 从文本文件导入一个feed $feedFromFile = Zend_Feed::importFile(’feed.xml’); // 从PHP字符串变量导入一个feed
$feedFromPHP = Zend_Feed::importString($feedString);

以上的代码根据导入的feed的格式不同返回的值也不一样,如果是atom则返回Zend_Feed_Atom对象如果是RSS则返回一个Zend_Feed_Rss对象,如果feed不合法,则抛出一个Zend_Feed_Exception异常。 以上是通过直接用RSS进行解析,也可以直接处理html中的feed。可以直接用页面的url做参数返回一个feed.其原理是通过查找html标签中的link标签来实现的。

下面介绍一下Rss Feed对像怎么使用.
1.访问channel属性

title(); //输出channel的属性
foreach ($channel as $item){//取得item的属性.
echo $item->title() . “\n”; }
?>

2.atom feed的用法与rss feed差不多,不同的只有在于atom协议结构本身

count() . ‘ entries.’ . “\n\n”;
foreach ($feed as $entry) {
echo ‘标题: ‘ . $entry->title() . “\n”;
echo ‘摘要: ‘ . $entry->summary() . “\n\n”;
}
?>
Feed的条目的修改

current();
$entry->title = ‘This is a new title’;
$entry->author->email = ‘my_email@example.com’;
echo $entry->saveXML();
?>

这段代码将输出一个新条目完整(包括 声明)的包含所有必要命名空间的XML格式。 用自定义的命名空间创建一个Atom条目元素

title = ‘my custom entry’;
$entry->author->name = ‘Example Author’;
$entry->author->email = ‘me@example.com’;
Zend_Feed::registerNamespace(’myns’, ‘http://www.example.com/myns/1.0′);
$entry->{’myns:myelement_one’} = ‘my first custom value’;
$entry->{’myns:container_elt’}->part1 = ‘first nested custom part’;
$entry->{’myns:container_elt’}->part2 = ’second nested custom part’;
echo $entry->saveXML();
?>

根据以上方法基本可以满足处理feed的需求.

Posted in php, 技术.

Tagged with , .


0 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.



Some HTML is OK

or, reply to this post via trackback.