Вывести на страницу xml файл из хранилища - PullRequest
0 голосов
/ 01 июня 2018

я пытаюсь получить XML-файл из своего хранилища и показать его по URL, но не работает, страница пуста, проблема не в маршруте, она должна быть в моем коде, может кто-то сказать мнев чем проблема?

код:

$xml = simplexml_load_file(storage_path('app\file.xml'));
return \Response::make($xml , '200')->header('Content-Type', 'text/xml');

1 Ответ

0 голосов
/ 01 июня 2018

\Response::make ожидает, что вы передадите строку с содержимым, которое хотите вернуть, но вы передаете объект: simplexml_load_file возвращает SimpleXMLElement экземпляр.

Как это происходит, SimpleXMLElement может быть преобразован в строку, но он не будет возвращать полный XML, только содержимое этого элемента - это так, что вы можете делать такие вещи, как $xml = simplexml_load_string('<doc><message>Hello, World!</message></doc>); $message = (string)$xml->message;

Если вы просто хотите полное содержимоеXML-файл, без каких-либо изменений, вам вообще не нужно анализировать его с SimpleXML, просто загрузите содержимое в строку:

$xml_string = file_get_contents(storage_path('app\file.xml'));
return \Response::make($xml_string , '200')->header('Content-Type', 'text/xml');

Если идея заключается в том, что вы будете манипулировать им позже, поэтому вам нужен объект, затем вам нужно вызвать ->asXML(), чтобы превратить его обратно в строку:

$xml = simplexml_load_file(storage_path('app\file.xml'));
#TODO: Do something interesting with $xml
$xml_string = $xml->asXML();
return \Response::make($xml_string , '200')->header('Content-Type', 'text/xml');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...