0

我客户的系统需要使用 flickr.photos.search API 调用从他们的 Flickr 帐户访问私人照片。我进行了设置并获得了该调用的生成 URL。当我在浏览器中访问该 URL 时,它会输出应有的 XML。

(API 参考:http ://www.flickr.com/services/api/flickr.photos.search.html )

但是,在 PHP 中,我想访问该 XML 并使用 simplexml PHP 扩展显示它。我不知道如何访问 XML,因为它不是位于 .xml 文件中,而是位于动态 URL 中。

XML 文件(来自浏览器)如下所示:

<rsp stat="ok">
  <photos page="1" pages="1" perpage="100" total="4">
    <photo id="4332852622" owner="36520372@N05" secret="xxxxxxxx" server="2760" farm="3" title="building" ispublic="0" isfriend="0" isfamily="0"/>
    <photo id="4332113745" owner="36520372@N05" secret="xxxxxxx" server="2803" farm="3" title="digging" ispublic="0" isfriend="0" isfamily="0"/>
    <photo id="4332852444" owner="36520372@N05" secret="xxxxxxx" server="4025" farm="5" title="house" ispublic="0" isfriend="0" isfamily="0"/>
    <photo id="4332113699" owner="36520372@N05" secret="xxxxxxx" server="2802" farm="3" title="PaulLuomaHab" ispublic="0" isfriend="0" isfamily="0"/>
  </photos>
</rsp>

使用 PHP 我正在尝试这个:

$rsp = simplexml_load_file($flickrURL);
foreach($rsp->photos->photo as $photo) {
    echo $photo->title;
}

它什么也不返回。我在这里错过了什么吗?

注意:echo "Ding!";foreach上面的循环中添加了它,它确实回显了 Ding!Ding!Ding!Ding!,这意味着它识别出有 4 张照片并循环了正确的次数。

显然,出于某种原因,它对 $photo->title 不满意?

当我使用print_r($photo)我得到这个:

SimpleXMLElement Object ( [@attributes] => Array ( [id] => 4332852622 [owner] => 36520372@N05 [secret] => 88fff62f43 [server] => 2760 [farm] => 3 [title] => building [ispublic] => 0 [isfriend] => 0 [isfamily] => 0 ) )
4

2 回答 2

0

使用 SimpleXML 时,您应该始终在它所代表的节点之后命名您的 PHP 变量。它有助于清楚地了解您在 XML 树中的位置。例如,您的代码应该是:

$rsp = simplexml_load_file($flickrURL);
foreach($rsp->photos->photo as $photo)
{
    echo $photo['title'];
}
于 2010-02-05T18:44:57.380 回答
0

我自己解决了,呵呵。标题是 XML 元素的一个属性,而不是一个节点,因此它像数组而不是对象属性一样被访问(令人困惑的术语)。

所以它echo $photo['title'];和噗!有用。

于 2010-02-05T19:22:24.180 回答