我正在尝试读取tumblr提供的xml信息,以在tumblr上创建一种新闻提要,但我遇到了很大的困难。
<?php
$request_url = 'http://candybrie.tumblr.com/api/read?type=post&start=0&num=5&type=text';
$xml = simplexml_load_file($request_url);
if (!$xml)
{
exit('Failed to retrieve data.');
}
else
{
foreach ($xml->posts[0] AS $post)
{
$title = $post->{'regular-title'};
$post = $post->{'regular-body'};
$small_post = substr($post,0,320);
echo .$title.;
echo '<p>'.$small_post.'</p>';
}
}
?>
它总是在尝试通过节点时立即断开。所以基本上"tumblr->posts;….ect"显示在我的html页面上。
我已经尝试将信息保存为本地xml文件。我尝试过使用不同的方法来创建simplexml对象,比如将其加载为字符串(可能是一个愚蠢的想法)。我仔细检查了一下我的网络主机是否正在运行PHP5。所以基本上,我一直在思考为什么这不起作用。
编辑:好吧,我试着从我开始的地方改变(回到原来的方式,从tumblr开始只是另一种(实际上很愚蠢)尝试修复它的方式。它仍然在第一个->之后中断,所以在屏幕上显示"posts[0]AS$post….ect"。
这是我用PHP做的第一件事,所以可能有一些明显的东西我应该事先设置好。我不知道,也找不到这样的东西。
这应该有效:
<?php
$request_url = 'http://candybrie.tumblr.com/api/read?type=post&start=0&num=5&type=text';
$xml = simplexml_load_file($request_url);
if ( !$xml ){
exit('Failed to retrieve data.');
}else{
foreach ( $xml->posts[0] AS $post){
$title = $post->{'regular-title'};
$post = $post->{'regular-body'};
$small_post = substr($post,0,320);
echo $title;
echo '<p>'.$small_post.'</p>';
echo '<hr>';
}
}
First thing in you code is that you used root element that should not be used.
<?php
$request_url = 'http://candybrie.tumblr.com/api/read?type=post&start=0&num=5&type=text';
$xml = simplexml_load_file($request_url);
if (!$xml)
{
exit('Failed to retrieve data.');
}
else
{
foreach ($xml->posts->post as $post)
{
$title = $post->{'regular-title'};
$post = $post->{'regular-body'};
$small_post = substr($post,0,320);
echo .$title.;
echo '<p>'.$small_post.'</p>';
}
}
?>
$xml->posts
返回posts节点,因此如果您想迭代postsnodes,您应该尝试$xml->posts->post
,它使您能够迭代第一个postnodes内的post节点。
正如Needhi所指出的,你不应该通过根节点(tumblr),因为$xml
本身就是根节点。(所以我确定了答案)。