codeigniter 2.0 到 3.0 xml 输出损坏
codeigniter 2.0 to 3.0 xml output broken
从 2.0 迁移到 CI 3.0 后,xml 输出出现问题。我通过 restserver 在控制器上使用以下代码来做到这一点:
$xml = $this->_toRss($q);
$this->response->format = 'xml';
$this->response($xml, 200 );
$xml 是我创建的 SimpleXMLElement,assemble 使用如下代码:
$xmlRoot = new SimpleXMLElement("<rss/>");
$xml = $xmlRoot;
$xml->addAttribute("version", "1.0");
$channel = $xml->addChild("channel");
$channel->addChild("title", "My Company");
$channel->addChild("link", xml_convert($curURL));
$channel->addChild("description", "RSS feed");
此迁移中的代码没有更改。
以下是在 2.0 上运行的响应示例:
http://pastebin.com/JfNNJeH7
这是 3.0 上的响应示例:
http://pastebin.com/ubDCNnhD
这将被注册为 restserver 上的错误,但这里有一个解决方法供需要它的人使用:
$this->output->set_status_header(200);
$this->output->set_content_type('application/xml', strtolower($this->config->item('charset')));
$this->output->set_output($xml->asXML());
从 2.0 迁移到 CI 3.0 后,xml 输出出现问题。我通过 restserver 在控制器上使用以下代码来做到这一点:
$xml = $this->_toRss($q);
$this->response->format = 'xml';
$this->response($xml, 200 );
$xml 是我创建的 SimpleXMLElement,assemble 使用如下代码:
$xmlRoot = new SimpleXMLElement("<rss/>");
$xml = $xmlRoot;
$xml->addAttribute("version", "1.0");
$channel = $xml->addChild("channel");
$channel->addChild("title", "My Company");
$channel->addChild("link", xml_convert($curURL));
$channel->addChild("description", "RSS feed");
此迁移中的代码没有更改。
以下是在 2.0 上运行的响应示例: http://pastebin.com/JfNNJeH7
这是 3.0 上的响应示例: http://pastebin.com/ubDCNnhD
这将被注册为 restserver 上的错误,但这里有一个解决方法供需要它的人使用:
$this->output->set_status_header(200);
$this->output->set_content_type('application/xml', strtolower($this->config->item('charset')));
$this->output->set_output($xml->asXML());