

laravel框架在输出xml的时候会自行用text/html方式返回数据,解决办法:
需要return response($xml,200)->header(“Content-type”,“text/xml”);这样的方式才能改变header头
laravel返回xml数据格式例子:
/**
* 神马搜索数据结构化,written:yangxingyi Data:2018-10-25 11:15
*/
public function index(Request $request){
$data_array = array(
array(
'title' => 'title1',
'content' => 'content1',
'pubdate' => '2009-10-11',
),
array(
'title' => 'title2',
'content' => 'content2',
'pubdate' => '2009-11-11',
)
);
$title_size = 1;
$xml = "<?xml version="1.0" encoding="utf-8"?>
";
$xml .= "<article>
";
foreach ($data_array as $data) {
$xml .= $this->create_item($data['title'], $title_size, $data['content'], $data['pubdate']);
}
$xml .= "</article>
";
#echo $xml;
return response($xml,200)->header("Content-type","text/xml");
}
/**
* 神马搜索数据结构化,节点的具体内容 written:yangxingyi
*/
private function create_item($title_data, $title_size, $content_data, $pubdate_data)
{
$item = "<item>
";
$item .= "<title size="" . $title_size . "">" . $title_data . "</title>
";
$item .= "<content>" . $content_data . "</content>
";
$item .= " <pubdate>" . $pubdate_data . "</pubdate>
";
$item .= "</item>
";
return $item;
}PHP生成xml格式的数据直接加上 header(“Content-type: text/xml”);头就行了
<?php
header("Content-type: text/xml");
$data_array = array(
array(
'title' => 'title1',
'content' => 'content1',
'pubdate' => '2009-10-11',
),
array(
'title' => 'title2',
'content' => 'content2',
'pubdate' => '2009-11-11',
)
);
$title_size = 1;
$xml = "<?xml version="1.0" encoding="utf-8"?>
";
$xml .= "<article>
";
foreach ($data_array as $data) {
$xml .= create_item($data['title'], $title_size, $data['content'], $data['pubdate']);
}
$xml .= "</article>
";
echo $xml;
//创建XML单项
function create_item($title_data, $title_size, $content_data, $pubdate_data)
{
$item = "<item>
";
$item .= "<title size="" . $title_size . "">" . $title_data . "</title>
";
$item .= "<content>" . $content_data . "</content>
";
$item .= " <pubdate>" . $pubdate_data . "</pubdate>
";
$item .= "</item>
";
return $item;
}
?>更多PHP相关知识,请访问PHP教程!
