我的客户系统需要使用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
,它回应丁!丁!丁!丁!,这意味着它认识到有4个照片和循环正确的次数。
显然,由于某些原因,它对$ photo-&gt;标题感到不满意?
同时
当我使用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 ) )
答案 0 :(得分:0)
使用SimpleXML时,应始终在其表示的节点之后命名PHP变量。它有助于清楚地了解您在XML树中的位置。例如,您的代码应为:
$rsp = simplexml_load_file($flickrURL);
foreach($rsp->photos->photo as $photo)
{
echo $photo['title'];
}
答案 1 :(得分:0)
我自己解决了,doh。 Title是XML元素的属性,而不是节点,因此它像数组一样被访问,而不像对象属性(令人困惑的术语)。
所以这是echo $photo['title'];
和噗!它有效。