网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > PHP技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.PHP取得文件后缀.
.一个SQL管理员的web接口.
.PHP服务器变量设置的方法介绍.
.PDO的使用.
.PHP实现自动刷数和“灌水”机.
.网管注意 PHP 5.2.5之前版本多个.
.用PHP连接Oracle for NT 远程数据.
.还是说php实现singleton模式.
.PHP4引用文件语句的对比.
.PHP脚本的10个技巧(1).
.PHP字符串函数库.
.如何做到多筆資料的同步.
.php 3维饼图的实现.
.在PHP中全面阻止SQL注入式攻击之.
.一个特别好的学习PHP引用返回的例.
.动态网页制作PHP常用的正则表达式.
.PHP代码的优与劣.
.PHP5对Mysql5的任意数据库表的管.
.vBulletin HACK----显示话题大小.
.判“新”函数:得到今天与明天的.

用php5的simplexml解析各种feed

发表日期:2008-12-22


用simplexml处理atom数据
很多博客使用atom来输出数据,但是atom使用了名称空间(namespace),所以现在请求被命名的元素和本地名称时必须指定名称空间统一资源标识符(URI),还有一点就是simplexml的xpath方法无法直接query这个xml tree。

从 PHP 5.1 版开始,SimpleXML 可以直接对带名称空间的文档使用 XPath 查询。和通常一样,XPath 位置路径必须使用名称空间前缀,即使搜索的文档使用默认名称空间也仍然如此。registerXPathNamespace() 函数把前缀和后续查询中使用的名称空间 URL 联系在一起。

下面是使用xpath查询atom文档title元素的例子:

PLAIN TEXT
CODE:
$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($titles as $title)
  echo"<h2>". $title ."</h2>";
用simplexml处理rss数据
wordpress可以输出rss2的数据源,这里面也有一些不同的namespace,比如dc。一个使用simplexml解析rss2的例子:


PLAIN TEXT
PHP:
$ns=array(
       'content'=>'http://purl.org/rss/1.0/modules/content/',
       'wfw'=>'http://wellformedweb.org/CommentAPI/',
       'dc'=>'http://purl.org/dc/elements/1.1/'
);
 
$articles=array();
 
// step 1: 获得feed
$blogUrl='http://www.ooso.net/index.php/feed/rss2';
$xml= simplexml_load_url($blogUrl);
 
// step 2: 获得channel metadata
$channel=array();
$channel['title']       =$xml->channel->title;
$channel['link']        =$xml->channel->link;
$channel['description']=$xml->channel->description;
$channel['pubDate']     =$xml->pubDate;
$channel['timestamp']   =strtotime($xml->pubDate);
$channel['generator']   =$xml->generator;
$channel['language']    =$xml->language;
 
// step 3: 获得articles
foreach($xml->channel->itemas$item){
       $article=array();
       $article['channel']=$blog;
       $article['title']=$item->title;
       $article['link']=$item->link;
       $article['comments']=$item->comments;
       $article['pubDate']=$item->pubDate;
       $article['timestamp']=strtotime($item->pubDate);
       $article['description']=(string)trim($item->description);
       $article['isPermaLink']=$item->guid['isPermaLink'];
 
       // get data held in namespaces
       $content=$item->children($ns['content']);
       $dc      =$item->children($ns['dc']);
       $wfw     =$item->children($ns['wfw']);
 
       $article['creator']=(string)$dc->creator;
       foreach($dc->subjectas$subject)
               $article['subject'][]=(string)$subject;
 
       $article['content']=(string)trim($content->encoded);
       $article['commentRss']=$wfw->commentRss;
 
       // add this article to the list
       $articles[$article['timestamp']]=$article;
}
这个例子中,使用children方法来获得名称空间中的数据:

PLAIN TEXT
PHP:
$dc      =$item->children($ns['dc']);

上一篇:PDO_MYSQL的一些预定义常量 人气:159
下一篇:动态网页技术PHP关于cookie和session的分析 人气:36
浏览全部simplexml的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐