\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');