网站建设
  简约型网页设计套餐998
  实惠型网站建设套餐2580
  综合型网站制作套餐4980
  网站改版与网站维护
  行业网站建设方案
  大型网站建设解决方案
  企业网站建设流程
  帝网科技网站设计与网站制作
建站FAQ
·网站空间问题解答
·企业邮箱问题解答
 
酷站欣赏
·房产酷站(379)
·综合门户(8 9)
·建筑装饰(603)
·手机通讯(354)
·生活购物(376)
·医疗保健(199)
·文化摄影(602)
·休闲体育(399)
>>更多酷站欣赏
网站优化
·Google(谷歌)优化   ·百度(BaiDu)优化
·雅虎(Yahoo)优化    ·Alexa排名优化   
·Google AdSense   ·DMOZ目录提交  
建站知识
·网站建设知识·网站名词解释·网站运营知识
·网络营销知识·搜索引擎知识·实用技术文摘
网站推广
百度网站推广 google网站推广
搜狐网站推广 网易网站推广
新浪网站推广   雅虎网站推广
  您当前位置: 当前位置:帝网科技 >> web开发 >> PHP专栏 >> 浏览文章
 
 
用php5的simplexml解析各种feed
作者:编辑整理 来源:帝网科技 日期:2008年12月24日 点击数:


用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"

". $title ."

";
用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']);

 

  相关文章
 
·如何在PHP开启gzip页面压缩实例正文分
·如何正确运用PHP json_encode函数进行
·PHP下载断点续传的代码正文分析错误
·PHP取得客户端IP地址代码正文分析错误
·PHP判断用户IP来路的一个方法正文分析
·PHP+mysql分页代码正文分析错误
·php去除HTML标记正文分析错误
·php轻松快速缓存全站正文分析错误
·php多语言网站解决方案正文分析错误
·php图片验证码函数正文分析错误
·PHP初学者常见问题集(21问答)正文分
·分享PHP技术开发技巧正文分析错误
·cURL库功能简介:抓取网页 POST数据及
·PHP常用函数:过滤HTML字符串正文分析
·php fscanf()函数使用方法详解正文分析
·和php有关的几种常见安全详解正文分析
·php连接mysql出现乱码解决办法正文分析
·PHP非常简单的使用模板制作静态页面正
·非常简单PHP缩略图生成程序源代码正文
·无法载入 mcrypt 扩展,请检查 PHP 配置
 
 

公司环境 | 合作伙伴 | 人才招聘 | 付款方式 | 关于我们

地址:广州市天河区中山大道中120号D805 电话:020-82529556 传真:020-82529556
广州帝网网络科技有限公司 版权所有 粤ICP备08119341号