PHP5的Simplexml
php5新增了Simplexml extension,我们可以借助它来解析,修改XML。在IBM的知识库里找到一篇文章对此做了专门的介绍,而且比较详细,感兴趣的话可以看看最后的参考文档。
一个RSS Feed
下面是一个RSS的例子,我们准备用simplexml来解析它。
[xml]
The old Penn Station in New York was torn down before I was born.
Looking at these pictures, that feels like a mistake. The current site is
functional, but no more; really just some office towers and underground
corridors of no particular interest or beauty. The new Madison Square…
to type some random string in your subject such as E37T to get through.
Needless to say neither I nor most other people bother to communicate with
these paranoids. They are grossly overreacting to the spam problem.
Personally I won’t …
[/xml]
解析XML
首先载入一个xml
$rss = simplexml_load_file('http://www.ooso.net/index.php/feed/');
这里使用的是simplexml_load_file函数,能够马上解析指定url的xml文件,因为是simplexml,所以simple。下面就可以象读取php数组一样来使用解析后xml的内容了,比如读取RSS的标题:
$title = $rss->channel->title;
<title><?php echo $title; ?></title>
或者是循环显示rss的各个ITEM节点
$rss->channel->item //这个是item
foreach ($rss->channel->item as $item) {
echo "<h2>" . $item->title . "</h2>";
echo "<p>" . $item->description . "</p>";
}
一个简单但完整的RSS Reader
把上面的代码整合在一起,就是一个五脏俱全的麻雀牌RSS Reader了。
<?php
// 载入并解析XML
$rss = simplexml_load_file('http://partners.userland.com/nytRss/nytHomepage.xml');
$title = $rss->channel->title;
?>
<html xml:lang="en" lang="en">
<head>
<title><?php echo $title; ?></title>
</head>
<body>
<h1><?php echo $title; ?></h1>
<?php
// 循环输出ITEM节点的说明
foreach ($rss->channel->item as $item) {
echo "<h2><a href='" . $item->link . "'>" . $item->title . "</a></h2>";
echo "<p>" . $item->description . "</p>";
}
?>
</body>
</html>
Simplexml,真的很simple,不信可以拿去和php的DOM function做下比较:)
参考
http://www-128.ibm.com/developerworks/xml/library/x-simplexml.html
作者: Volcano 发表于October 12, 2006 at 7:37 am
Leonardo 于 2006-10-12 @ 13:38:07 留言 :
看起来确实不错,简单易用。
Binlle 于 2006-10-12 @ 17:34:25 留言 :
严禁楼上的打广告.学术重地,不容撒野。楼主只研究PHP吗?
volcano 于 2006-10-12 @ 18:05:40 留言 :
工作原因,比较偏重php这方面,其它方面正在逐渐涉猎
MP3讯雷 于 2007-05-22 @ 17:09:31 留言 :
首先不能设置HEADER头
其次不能指定读一小段,比如我只想读第一个item但它还是把文件都抓回来了
volcano 于 2007-05-22 @ 18:32:26 留言 :
在这方面,simplexml不会做的那么细致的
你可以考虑先用其它程序将xml下回来再做进一步解析,比如pear::http_request
winnie 于 2008-11-04 @ 00:01:49 留言 :
看到大大的这篇文章茅舍顿开,另外想请教一下,如果想读取多个rss源应该怎么处理。