2011-03-25 19 views
5

tengo el siguiente código (de una pregunta anterior en este sitio) que recupera una cierta imagen de un archivo XML:¿Cargar archivo xml externo?

<?php 
$string = <<<XML 
<?xml version='1.0'?> 
<movies> 
    <movie> 
    <images> 
     <image type="poster" url="http://cf1.imgobject.com/posters/b7a/4bc91de5017a3c57fe00bb7a/i-am-legend-original.jpg" size="original" width="675" height="1000" id="4bc91de5017a3c57fe00bb7a"/> 
     <image type="poster" url="http://cf1.imgobject.com/posters/b7a/4bc91de5017a3c57fe00bb7a/i-am-legend-mid.jpg" size="mid" width="500" height="741" id="4bc91de5017a3c57fe00bb7a"/> 
     <image type="poster" url="http://cf1.imgobject.com/posters/b7a/4bc91de5017a3c57fe00bb7a/i-am-legend-cover.jpg" size="cover" width="185" height="274" id="4bc91de5017a3c57fe00bb7a"/> 
    </images> 
    </movie> 
</movies> 
XML; 

$xml = simplexml_load_string($string); 

foreach($xml->movie->images->image as $image) { 

    if(strcmp($image['size'],"cover") == 0) 
     echo $image['url']; 
} 

?> 

Lo que me gustaría saber es, ¿Cómo puedo cargar el archivo XML externo en lugar de escribir los datos XML en el PHP real como se muestra arriba?

Respuesta

12

de vista del procedimiento, simple_xml_load_file.

$file = '/path/to/test.xml'; 
if (file_exists($file)) { 
    $xml = simplexml_load_file($file); 
    print_r($xml); 
} else { 
    exit('Failed to open '.$file); 
} 

También es posible que desee considerar el uso de la interfaz OO, SimpleXMLElement.

Editar: Si el archivo está en algún URI remoto, file_exists no funcionará.

$file = 'http://example.com/text.xml'; 
if(!$xml = simplexml_load_file($file)) 
    exit('Failed to open '.$file); 
print_r($xml); 
+0

'file_exists' está buscando ese archivo en el sistema local, que no puede hacer ya que el archivo existe en un servidor remoto. – cantlin

+0

Gracias Dae! :) Creo que está funcionando ahora –

2

$xml = simplexml_load_file('path/to/file');

Cuestiones relacionadas