How do I return the value of the owner and id attributes respectively from an XML result set using PHP?
I am using PHP to iterate over the following result set, the aim is to build a hyperlink for each result using a foreach loop. I have stored the XML result in $images, and have constructed this loop:
foreach ($images as $image) {
//Build link to each photo returned
//base URL
$flickrPhotoUrl = 'http://www.flickr.com/photos/';
//Append user ID
$flickrPhotoUrl .= "";
echo $flickrPhotoUrl; }
Here is a sample result from Flickr:
<photos page="1" pages="10982" perpage="10" total="109813">
<photo id="4616840471" owner="47823583@N03" secret="1b83173bc0" server="4013" farm="5" title="Strawberry Bears" ispublic="1" isfriend="0" isfamily="0"></photo>
<photo id="4616612597" owner="12658756@N08" secret="f626214382" server="4059" farm="5" title="Yarn Chef Minestrone - Grickle Grass" ispublic="1" isfriend="0" isfamily="0"></photo>
<photo id="4616469567" owner="26284268@N00" secret="6911a66838" server="4022" farm="5" title="P5130121.JPG" ispublic="1" isfriend="0" isfamily="0"></photo>
<photo id="4617076736" owner="26284268@N00" secret="8b990acba4" server="4047" farm="5" title="P5130106.JPG" ispublic="1" isfriend="0" isfamily="0"></photo>
<photo id="4616470013" owner="26284268@N00" secret="44600b3836" server="4036" farm="5" title="P5130125.JPG" ispublic="1" isfriend="0" isfamily="0"></photo>
<photo id="4616466147" owner="26284268@N00" secret="554eab8667" server="4052" farm="5" title="P5130116.JPG" ispublic="1" isfriend="0" isfamily="0"></photo>
<photo id="46开发者_JAVA技巧17082398" owner="26284268@N00" secret="4a2b663442" server="3350" farm="4" title="P5130118.JPG" ispublic="1" isfriend="0" isfamily="0"></photo>
<photo id="4617078272" owner="26284268@N00" secret="357737017b" server="4013" farm="5" title="P5130109.JPG" ispublic="1" isfriend="0" isfamily="0"></photo>
<photo id="4617081446" owner="26284268@N00" secret="1f87726497" server="4048" farm="5" title="P5130117.JPG" ispublic="1" isfriend="0" isfamily="0"></photo>
<photo id="4617077676" owner="26284268@N00" secret="77ca9f754a" server="3330" farm="4" title="P5130108.JPG" ispublic="1" isfriend="0" isfamily="0"></photo>
You can use PHP's SimpleXML to manipulate/traverse to your XML easily. Assuming you have your resulting your resulting xml string stored in $images,
$images_xml = simplexml_load_string($images);
$flickr_url = "http://flickr.com/photos/";
foreach($images_xml->children() as $image)
{
$attributes = $image->attributes();
$image_url = $flickr_url . $attributes->id;
//Do whatever you want to do with the link
//for example, echo it
echo "<br /><a href=\"". $image_url ."\">" . $attributes->title . "</a>";
//Not sure if the link points to an actual image, but is the idea :)
}
Just for reference purposes http://www.php.net/manual/en/book.simplexml.php
Hope that helps.
I use XML_Unserializer from PEAR
$options = array(
'complexType' => 'object',
'encoding' => 'utf-8',
'parseAttributes' => TRUE,
'returnResult' => TRUE
);
$xr = new XML_Unserializer($options);
$images = $xr->unserialize($images);
$flickrPhotoUrl = 'http://www.flickr.com/photos/';
foreach($images->photos as $photo)
{
$flickrPhotoUrl .= $photo->owner;
}
精彩评论