开发者

PHP return Nested XML

i am retrieving XML from a file as per code below. However when the XML gets deeper at the point of ".$image["url"]." i am trying to retrieve one of the images but it is not working. I would also need to search the images as there are multiple tags by the SIZE variable in the XML (XML below).

how do you define this after i have allready defined the $xml->xpath to a higher container?

$searchurl = "movies.xml";
$xml = simplexml_load_file($searchurl);
$i = 0;
foreach($xml->xpath('/movies/movie') as $movie){
    $image = $xml->xpath('/movies/movie/images/image');
    echo "<table id=\"ctable\">"
        ."<thead><tr><th>"
        ."<th width=\"100%\"><a href=\"JavaScript:void(0);\" onclick=\"showHide('movie".$movie->id."','span".$movie->id."')\">"
        ."<span id=\"span".$movie->id."\"><img src=\"images\icon_collapse.gif\" class=\"expand\" alt=\"Expand\"></span>"
        ."<span>".$movie->name."</span></a></th>"
        ."<th><span></span></th>"
        ."</th></tr></thead>";
    echo "<table><tfoot id=\"movie".$movie->id."\">"
        ."<tr><td rowspan=\"6\"><a class=\"thumbnail\" href=\"#thumb\"><img src=\"".$image["url"]."\" height=\"150px\" width=\"150px\"><span><img src=\"".$image["url"]."\"/><br/>".$movie->name."</span></a></td><td rowspan=\"6\"><img class=\"line\" width=\"2\" height=\"100%\"></td><td class=\"jralign\">Movie ID:</td><td>".$movie->id."</td></tr>"
        ."<tr><td class=\"jralign\">Movie Link:</td><td><a href=\"".$movie->url."\">".$movie->url."</a></td></tr>"
        ."<tr><td class=\"jralign\">Released:</td><td>".$movie->released."</td></tr>"
        ."<tr><td class=\"jralign\">Classification:</td><td>".$movie->certification."</td></tr>"
        ."<tr><td class=\"jralign\">Adult:</td><td>".$movie->adult."</td></tr>"
        ."<tr><td class=\"jralign\" valign=\"top\">Overview:</td><td>".$movie->overview."</td></tr>"
        ."</tfoot></table>"
        ."</table><br/>";
    $i++;
}

XML It is searching through.

<?xml version="1.0" encoding="UTF-8"?> 
<movies> 
  <movie> 
    <score></score> 
    <popularity>3</popularity> 
    <translated></translated> 
    <adult>false</adult> 
    <language>en</language> 
    <original_name>Transformers</original_name> 
    <name>Transformers</name> 
    <alternative_name>The Transformers</alternative_name> 
    <type>movie</type> 
    <id>1858</id> 
    <imdb_id>tt0418279</imdb_id> 
    <url>http://www.themoviedb.org/movie/1858</url> 
    <votes>61</votes> 
    <rating>7.4</rating> 
    <certification>PG-13</certification> 
    <overview>Young teenager Sam Witwicky becomes involved in the ancient struggle between two extraterrestrial factions of transforming robots, the heroic Autobots and the evil Decepticons.  Sam holds the clue to unimaginable power and the Decepticons will stop 开发者_运维知识库at nothing to retrieve it.</overview> 
    <released>2007-07-04</released> 
    <images> 
      <image type="poster" url="transformers-original.jpg" size="original" width="1000" height="1500" id="4c9ea5cf5e73d67049000233"/> 
      <image type="poster" url="transformers-mid.jpg" size="mid" width="500" height="750" id="4c9ea5cf5e73d67049000233"/> 
      <image type="poster" url="transformers-cover.jpg" size="cover" width="185" height="278" id="4c9ea5cf5e73d67049000233"/> 
      <image type="poster" url="transformers-thumb.jpg" size="thumb" width="92" height="138" id="4c9ea5cf5e73d67049000233"/> 
      </images> 
      <version>141</version> 
      <last_modified_at>2011-01-04 16:33:25</last_modified_at> 
    </movie>
</movies>

Updated Function: Not displaying images.

        $searchurl = "movies.xml";
        $xml = simplexml_load_file($searchurl); 
foreach($xml->xpath('/movies/movie') as $movie){
            $images = $movie->xpath('/images/image');
            $image_url = '';
            foreach($images as $image) {
                $attributes = $image->attributes();
                if ($attributes['size'] == 'thumb') {
                    $image_url = $attributes['url'];
                    break;
                }
            }
            echo "<table id=\"ctable\">"
                ."<thead><tr><th>"
                ."<th width=\"100%\"><a href=\"JavaScript:void(0);\" onclick=\"showHide('movie".$movie->id."','span".$movie->id."')\">"
                ."<span id=\"span".$movie->id."\"><img src=\"images\icon_collapse.gif\" class=\"expand\" alt=\"Expand\"></span>"
                ."<span>".$movie->name."</span></a></th>"
                ."<th><span>".$this->isWatching($movie->id, $uid, $movie->name, 'movie')."</span></th>"
                ."</th></tr></thead>";
            echo "<table><tfoot id=\"movie".$movie->id."\">"
                ."<tr><td rowspan=\"6\"><a class=\"thumbnail\" href=\"#thumb\"><img src=\"".$image_url."\" height=\"150px\" width=\"150px\"><span><img src=\"".$image_url."\"/><br/>".$movie->name."</span></a></td><td rowspan=\"6\"><img class=\"line\" width=\"2\" height=\"100%\"></td><td class=\"jralign\">Movie ID:</td><td>".$movie->id."</td></tr>"
                ."<tr><td class=\"jralign\">Movie Link:</td><td><a href=\"".$movie->url."\">".$movie->url."</a></td></tr>"
                ."<tr><td class=\"jralign\">Released:</td><td>".$movie->released."</td></tr>"
                ."<tr><td class=\"jralign\">Classification:</td><td>".$movie->certification."</td></tr>"
                ."<tr><td class=\"jralign\">Adult:</td><td>".$movie->adult."</td></tr>"
                ."<tr><td class=\"jralign\" valign=\"top\">Overview:</td><td>".$movie->overview."</td></tr>"
                ."</tfoot></table>"
                ."</table><br/>";
            $i++;
        }


$images = $xml->xpath('/movies/movie/images/image');
$needed_image_url = '';
foreach($images as $image) {
    $attributes = $image->attributes();
    if ($attributes['size'] == 'thumb') {
        $needed_image_url = $attributes['url'];
        break;
    }
}

this would grab the thumb image url for instance.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜