编程爱好者之家

thinkphp5.1生成xml

2022-08-15 1216

public function xml(){

	$articleList = $this->getArticleList(); //自己的获取文章的方法,要改成你自己的方法
	
	$html ='';

	$html .='<urlset>';
	foreach($articleList as $key=>$value){
		$html .='<url>';
		$html .='<loc>https://www.codelovers.cn/article/'.$value['id'].'.html</loc>';
		$html .=' <lastmod>'.$value['create_date'].'</lastmod>';
		$html .=' <changefreq>Always</changefreq>';
		$html .='  <priority>0.8</priority>';
		$html .='</url>';
	}

	$html .='</urlset>';
        
    //最后一个参数是去掉tp字典的根节点,只输出自己的内容
	$result =  xml($html,200,[],['root_node'=>'xml']); 	
	

	return($result);
}


最后输如下:

image.png


//有的低版本可能会有问题,直接页面上输出<xml/>,数据为空,解决办法如下

 $result = xml([$html],200,[],['root_node'=>'xml']);


但是这样会产生一个问题就是在头部会自动生成 <xml><item id='0'></item>,解决办法如下

image.png


1.找到think下的 xml.php下的 dataToXml()方法,找到

image.png

然后删除红色圈住的就可以了


image.png


2.找到xmlEncode()

image.png

然后删除红色圈住的就可以了

image.png

同类文章

您的赞赏是对小编最大的支持!