PHP - проблемы с получением XML с использованием simplexml_load_file - PullRequest
2 голосов
/ 17 декабря 2010

У меня проблемы с получением XML из файла с помощью функции simplexml_load_file. Я пробовал поискать в Google, но у всех остальных возникают проблемы, когда они получают реальную ошибку или предупреждение. Я не получаю ошибок и предупреждений, но когда я делаю это:

$sims = simplexml_load_file("http://my-url.com/xml.php") or die("Unable to load XML file!");
var_dump($sims);

вывод:

object(SimpleXMLElement)#1 (1) {
  [0]=>
  string(1) "
"
}



Однако, если я сделаю это:

$ch = curl_init("http://my-url.com/xml.php");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
echo $output;

вывод:

<?xml version="1.0"?>
<simulators>
    <simulator>
        <mac>00-1A-4D-93-27-EC</mac>
        <friendlyName>a Travis Desk</friendlyName>
        <roundSessions>2</roundSessions>
        <rangeSessions>0</rangeSessions>
        <timePlayed>00:03:21</timePlayed>
    </simulator>
</simulators>



Я заставил его работать следующим образом:

$ch = curl_init("http://my-url.com/xml.php");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);

$sims = simplexml_load_string($output) or die("Unable to load XML file!");
var_dump($sims);

который выводит:

object(SimpleXMLElement)#1 (1) {
  ["simulator"]=>
  object(SimpleXMLElement)#2 (5) {
    ["mac"]=>
    string(17) "00-1A-4D-93-27-EC"
    ["friendlyName"]=>
    string(13) "a Travis Desk"
    ["roundSessions"]=>
    string(1) "2"
    ["rangeSessions"]=>
    string(1) "0"
    ["timePlayed"]=>
    string(8) "00:03:21"
  }
}

Мне просто интересно, почему первый метод не сработал? У меня PHP версии 5.3.2-1ubuntu4.5 и libxml версии 2.7.6, работающие на Ubuntu Server 10.04.

Спасибо!

-Travis

Ответы [ 2 ]

1 голос
/ 17 декабря 2010

Я полагаю, что это может быть потому, что ваш XML-контент находится в файле с расширением .php.Вам нужно установить заголовок http на xml.

header ("Content-type: text/xml");

Поместите это перед выводом xml в ваш php-скрипт, который отвечает за выделение xml.(один на "http://my -url.com / xml.php")

http://www.satya -weblog.com / 2008/02 / header-for-xml-content-in-php-file.html

0 голосов
/ 17 декабря 2010

Спасибо за быстрый ответ.

@ ajreal - вы были на правильном пути. Оказывается, это была моя собственная глупая ошибка в строке запроса, которая по какой-то причине работала при вызове через cURL или в браузере, но не работала через simplexml_load_file. Извините за потраченное время!

-Travis

...