哦,多么可笑我制定的问题))我会尝试更详细。我有一条路:
Route::get('/parsers/settings/{id}', [AdminParserController::class, 'settings'])
->where('id', '[0-9]+')
->name('parsers::settings');
然后从XML文件中选择所需的元素并将其转换为字符串:
$xml = simplexml_load_file($model->url);
$exampleElement = $xml;
foreach (explode("->", $model->path) as $prop) {
$exampleElement = $exampleElement->$prop;
}
$exampleString = $exampleElement->asXML();
return view('admin.parser.settings', [
'model' => $model,
'exampleElement' => $exampleString,
]);
在视图中,我这样显示这个元素:
{{$exampleElement}}
在刀锋上我想展示这个元素。由于这是一个常规字符串,因此显示不正确。我需要以某种方式对输出进行样式化。
return response($exampleString, 200, [
'Content-Type' => 'application/xml'
]);
如果你这样做,它将显示它应该。但我需要把这个转换到视图上。
2条答案
按热度按时间2w3rbyxf1#
如果你想美化SimpleXML的
asXML()
返回的字符串,你可以在DOMDocument中加载字符串,并使用它的preserveWhiteSpace
和formatOutput
参数:https://www.php.net/manual/en/class.domdocument.php#domdocument.props.preservewhitespace
https://www.php.net/manual/en/class.domdocument.php#domdocument.props.formatoutput
现在,在你的视图中,你应该在
pre
元素中输出$formattedString
:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/pre
py49o6xq2#
我知道你在显示
$exampleElement
的内容时遇到了问题。如果您想在浏览器中显示它以供用户查看,您可以使用<pre>
标记来保留白色空格和换行符,如下所示:如果你需要使用实际值而不转义HTML标签(例如,从
<p>some text
到<p>some text
),你可以使用{!! !!}
语法打印变量如下:更新:
如果您还想从视图中向响应添加
Content-Type: application/xml
头,可以这样做: