在CodeIgniter中生成XML遇到问题,请求技术协助
CodeIgniter生成XML问题的修复方案
你的代码里有3个核心问题导致生成XML失败:
$this->load->view('sitemap', $data)默认直接输出视图内容,不会返回字符串,所以$string实际是空值,视图内容已经提前输出到浏览器了。- 你用硬编码的HTML字符串覆盖了视图生成的内容,等于白加载了
sitemap视图,完全没用。 - 没有设置XML响应头,浏览器无法正确识别返回的是XML类型内容。
修正后的完整代码:
$this->load->helper('xml'); // 必须设置XML响应头,确保浏览器正确解析 header('Content-Type: application/xml; charset=utf-8'); $data['settings'] = $this->settings_model->getSettings(); // 传入第三个参数TRUE,让视图返回字符串而非直接输出 $string = $this->load->view('sitemap', $data, TRUE); // 转义XML特殊字符,避免格式错误 $string = xml_convert($string); echo $string;
视图文件sitemap.php的正确写法(以站点地图为例):
<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <!-- 利用$data中的settings变量生成XML节点 --> <url> <loc><?php echo $settings['base_url']; ?></loc> <lastmod><?php echo date('Y-m-d'); ?></lastmod> <changefreq>daily</changefreq> <priority>1.0</priority> </url> <!-- 可以循环生成更多URL节点 --> </urlset>
内容的提问来源于stack exchange,提问作者Mahnoor Khan
相关产品推荐
相关产品推荐

