我在我的目录中生成了xml文件。我想用浏览器在浏览器中显示这个文件?
(我希望将其显示为站点地图)
这是我的代码:
public function siteMap()
{
$test_array = array (
'bla' => 'blub',
'foo' => 'bar',
'another_array' => array (
'stack' => 'overflow',
),
);
$xml_template_info = new \SimpleXMLElement("<?xml version=\"1.0\"?><template></template>");
$this->array_to_xml($test_array,$xml_template_info);
$xml_template_info->asXML(dirname(__FILE__)."/sitemap.xml") ;
header('Content-type: text/xml');
dd(readfile(dirname(__FILE__)."/sitemap.xml"));
}
public function array_to_xml(array $arr, \SimpleXMLElement $xml)
{
foreach ($arr as $k => $v) {
is_array($v)
? $this->array_to_xml($v, $xml->addChild($k))
: $xml->addChild($k, $v);
}
return $xml;
}
这是 sitemap.xml :
<?xml version="1.0"?>
<template><bla>blub</bla><foo>bar</foo><another_array><stack>overflow</stack></another_array></template>
我想在我的浏览器中显示此xml文件,是否有任何想法正确执行此操作?
已编辑:以下是标题的结果(&#39;内容类型:text / plain&#39;);
它包含一些额外的报告。
答案 0 :(得分:1)
尝试:
<?php
public function array_to_xml(array $data, \SimpleXMLElement $xml) {
foreach ($data as $key => $value) {
if (is_array($value)) {
if (is_numeric($key)) {
$key = 'item' . $key; //dealing with <0/>..<n/> issues
}
$subnode = $xml->addChild($key);
$this->array_to_xml($value, $subnode);
} else {
$xml->addChild("$key", htmlspecialchars("$value"));
}
}
}
public function siteMap()
{
$data = array(
'bla' => 'blub',
'foo' => 'bar',
'another_array' => array(
'stack' => 'overflow',
),
);
$xml_template_info = new \SimpleXMLElement("<?xml version=\"1.0\"?><template></template>");
$this->array_to_xml($data, $xml_template_info);
$xml_template_info->asXML(dirname(__FILE__) . "/sitemap.xml");
header('Content-type: text/xml');
die(readfile(dirname(__FILE__) . "/sitemap.xml"));
//or return readfile(dirname(__FILE__) . "/sitemap.xml");
}
答案 1 :(得分:1)
该错误告诉您输出的确切错误。关闭</template>
标记后会有很多额外内容。没有任何东西会将它显示为XML,因为它不是有效的XML。有东西正在发送额外的数据!
也许在exit();
电话后尝试readfile
。
答案 2 :(得分:0)
如果您只想在浏览器中以xml文件中的方式显示xml文件的内容,只需在基本地址后面的url中写入name_of_xml_file.xml
。
例如:
www.example.com/的 name_of_xml_file.xml 强>
无论你把它放在哪里。
它应该在您的网站文件夹中,如果您想在某件事情发生时自动加载,只需使用一个功能重定向到该页面。
答案 3 :(得分:0)
在您的视图中创建sitemap.blade.php。
在sitemap.blade.php中插入内容xml。
创建一个名为sistemap的函数。
public function sitemap(){
return response()->view('sitemap')->header('Content-Type', 'text/xml');
}
在您的路线中:
Route::get('sitemap', function () {
return view('sitemap');
});
答案 4 :(得分:0)
我所做的是在Laravel的公共文件夹中添加xml文件。像sitemap.xml这样的东西。因此,您可以使用http://yourdomain.com/sitemap.xml
轻松访问它。
答案 5 :(得分:0)
Laravel的dd
函数输出一堆HTML,让您浏览调试输入。它用于调试,不输出正常的内容到页面。你不应该这样使用它。
而不是
dd(readfile(dirname(__FILE__)."/sitemap.xml"));
试
return readfile(dirname(__FILE__)."/sitemap.xml");
答案 6 :(得分:0)
我创建了一个Laravel xml响应包:https://github.com/mtownsend5512/response-xml
安装它,就像这样简单:
$test_array = array (
'bla' => 'blub',
'foo' => 'bar',
'another_array' => array (
'stack' => 'overflow',
),
);
return response()->xml($test_array, 200, [], 'template');
您会得到:
<?xml version="1.0"?>
<template>
<bla>blub</bla>
<foo>bar</foo>
<another_array>
<stack>overflow</stack>
</another_array>
</template>
答案 7 :(得分:0)
假设xml的内容在$ xml变量中,则可以使用以下选项之一:
return response($xml, 200)->header('Content-Type', 'application/xml');
OR
return response($xml, 200, ['Content-Type' => 'application/xml']);
答案 8 :(得分:0)
改变你的路线:
allPSNR = zeros(1, numImages);
allSSIM = zeros(1, numImages);
for k = 1 : numImages
baseFileName = theFiles(k).name;
fullFileName = fullfile(theFiles(k).folder, baseFileName);
baseFileName1 = theFiles1(k).name;
fullFileName1 = fullfile(theFiles1(k).folder, baseFileName1);
lab = imread(fullFileName);
img = imread(fullFileName1);
allPSNR(k) = psnr(img, lab);
allSSIM(k) = ssim(img, lab);
end
meanPSNR = mean(allPSNR);
meanSSIM = mean(allSSIM);
答案 9 :(得分:0)
创建路线:
Route::get('sitemap.xml', 'SitemapController@index')->name('sitemapxml');
将此代码放入您的控制器中:
public function index() {
$posts = Post::where('status', '=', 1)->get();
return response()->view('sitemap_xml', ['posts' => $posts])->header('Content-Type', 'text/xml');
}
将此代码放入您的视图文件中:
<?= '<?xml version="1.0" encoding="UTF-8"?>'; ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
@foreach ($posts as $post)
<url>
<loc>{{ url($post->url) }}</loc>
<lastmod>{{ $post->updated_at->tz('UTC')->toAtomString() }}</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
@endforeach
</urlset>