2011-01-07 13 views
1

Ich erhalte XML aus einer Datei wie unten beschrieben. Wenn der XML-Code jedoch an der Stelle ".$image["url"]." tiefer wird, versuche ich eines der Bilder wiederherzustellen, aber es funktioniert nicht. Ich würde auch die Bilder suchen müssen, da es mehrere Variablen durch die Variable SIZE im XML gibt (XML unten).PHP return Verschachtelte XML

Wie definieren Sie dies, nachdem ich den $ xml-> xpath bereits auf einen höheren Container definiert habe?

$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 Es wird durchsucht.

<?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> 

Aktualisierte Funktion: Keine Bilder anzeigen.

 $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++; 
     } 

Antwort

2
$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; 
    } 
} 

dies würde die Daumen Bild-URL zum Beispiel greifen.

+0

danke dqhendricks, das funktioniert und ich habe das unter die erste "foreach" -Schleife gesetzt und es gibt jetzt Bilder zurück! (Ich kann nicht glauben, dass ich nicht daran gedacht habe, eine weitere Schleife in der Schleife laufen zu lassen). Wenn jedoch mehrere Filme im XML zurückgegeben werden, hat jeder Film das gleiche Bild wie der erste ... irgendwelche Ideen? – medoix

+0

oh ja. benutze einfach $ images = $ movie-> xpath ('/ images/image'); stattdessen – dqhendricks

+0

und jetzt nichts, ich habe Post mit Funktion aktualisiert, wie es jetzt ist. – medoix