Загрузить внешний XML-файл? - PullRequest
5 голосов
/ 25 марта 2011

У меня есть следующий код (из предыдущего вопроса на этом сайте), который извлекает определенное изображение из файла XML:

<?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'];
}

?>

Я хотел бы знать, как я могу загрузитьвнешний XML-файл вместо записи XML-данных в реальном PHP, как показано выше?

Ответы [ 3 ]

14 голосов
/ 25 марта 2011

Процедурно, 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);
}

Вы также можете рассмотреть возможность использования интерфейса OO, SimpleXMLElement .

Редактировать: Если файл находится на некотором удаленном URI, file_exists не будет работать.

$file = 'http://example.com/text.xml';
if(!$xml = simplexml_load_file($file))
  exit('Failed to open '.$file);
print_r($xml);
2 голосов
/ 25 марта 2011

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

2 голосов
/ 25 марта 2011

Вы можете использовать simplexml_load_file

...