PHP5的Simplexml—实例

来源:互联网 发布:老千 电影 知乎 编辑:程序博客网 时间:2024/04/19 19:10
 

php5新增了Simplexml extension,我们可以借助它来解析,修改XML。在IBM的知识库里找到一篇文章对此做了专门的介绍,而且比较详细,感兴趣的话可以看看最后的参考文档。

一个RSS Feed

下面是一个RSS的例子,我们准备用simplexml来解析它。

XML:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <rss version="0.92">
  3. <channel>
  4.   <title>Mokka mit Schlag</title>
  5.   <link>http://www.elharo.com/blog</link>
  6.   <language>en</language>
  7.   <item>
  8.     <title>Penn Station: Gone but not Forgotten</title>
  9.     <description>
  10.       The old Penn Station in New York was torn down before I was born.
  11.       Looking at these pictures, that feels like a mistake.   The current site is
  12.       functional, but no more; really just some office towers and underground
  13.       corridors of no particular interest or beauty. The new Madison Square...
  14.     </description>
  15.     <link>http://www.elharo.com/blog/new-york/2006/07/31/penn-station</link>
  16.   </item>
  17.   <item>
  18.     <title>Personal for Elliotte Harold</title>
  19.     <description>Some people use very obnoxious spam filters that require you
  20.       to type some random string in your subject such as E37T to get through.
  21.       Needless to say neither I nor most other people bother to communicate with
  22.       these paranoids. They are grossly overreacting to the spam problem.
  23.       Personally I won't ...</description>
  24.     <link>http://www.elharo.com/blog/tech/2006/07/28/personal-for-elliotte-harold/</link>
  25.   </item>
  26. </channel>
  27. </rss>

 

解析XML

首先载入一个xml

PHP:
  1. $rss =   simplexml_load_file('http://www.ooso.net/index.php/feed/');

 

 

这里使用的是simplexml_load_file函数,能够马上解析指定url的xml文件,因为是simplexml,所以simple。下面就可以象读取php数组一样来使用解析后xml的内容了,比如读取RSS的标题:

PHP:
  1. $title =  $rss->channel->title;
  2. <title><?php echo $title; ?></title>

 

或者是循环显示rss的各个ITEM节点

PHP:
  1. $rss->channel->item //这个是item

 

PHP:
  1. foreach ($rss->channel->item as $item) {
  2.   echo "<h2>" . $item->title . "</h2>";
  3.   echo "<p>" . $item->description . "</p>";
  4. }

 

一个简单但完整的RSS Reader

把上面的代码整合在一起,就是一个五脏俱全的麻雀牌RSS Reader了。

PHP:
  1. <?php
  2. // 载入并解析XML
  3. $rss =   simplexml_load_file('http://partners.userland.com/nytRss/nytHomepage.xml');
  4. $title =  $rss->channel->title;
  5. ?>
  6. <html xml:lang="en" lang="en">
  7. <head>
  8.    <title><?php echo $title; ?></title>
  9. </head>
  10. <body>
  11. <h1><?php echo $title; ?></h1>
  12. <?php
  13. // 循环输出ITEM节点的说明
  14. foreach ($rss->channel->item as $item) {
  15.   echo "<h2><a href='" . $item->link . "'>" . $item->title . "</a></h2>";
  16.   echo "<p>" . $item->description . "</p>";
  17. }
  18. ?>
  19. </body>
  20. </html>

 

Simplexml,真的很simple,不信可以拿去和php的DOM function做下比较:)