无法获取第三方应用程序要验证的 xml 源


Cannot get xml feed to be validated by third-party applications?

我目前正在尝试创建一个自动更新的提要,然后使用像twitterfeed这样的服务将这些更改推送到Facebook和Twitter。

当我查看 www.mysite.com/rss 时,我看到所有正确的作业都以纯文本形式显示,而不是以分层格式显示,但我没有任何其他错误可以真正告诉您。

我正在使用代码点火器,这是我在控制器和视图中拥有的当前代码。

控制器:

public function index(){
    $data['encoding'] = 'utf-8'; 
    $data['feed_name'] = 'www.mysite.com'; 
    $data['feed_url'] = 'http://www.mysite.com/rss'; 
    $data['page_description'] = 'Welcome to www.mysite.com feed url page'; 
    $data['page_language'] = 'en'; 
    $data['creator_email'] = 'myname@mysite.com'; 
    $this->db->order_by('time', 'DESC');
    $data['jobs'] = $this->db->get_where('jobs', array('active' => 1))->result_array(); 
    header("Content-Type: application/rss+xml"); 
    $data['main_content'] = "rss"; 
    $this->load->view('templates/rss_template', $data);
}

视图:

<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>
<rss version="2.0"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:admin="http://webns.net/mvcb/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:content="http://purl.org/rss/1.0/modules/content/">       
    <channel>
    <title><?php echo $feed_name; ?></title>
    <link><?php echo $feed_url; ?></link>
    <description><?php echo $page_description; ?></description>
    <dc:language><?php echo $page_language; ?></dc:language>
    <dc:creator><?php echo $creator_email; ?></dc:creator>
<?php
    foreach($jobs as $job){
?>          
        <item>
            <title><?php echo $job['role']; ?></title>
            <link><?php echo base_url()."job/view/".$job['id']."/".$job['url'].""; ?></link>
            <guid><?php echo date("D, d M Y H:i:s O", $job['time']); ?></guid>
            <description><?php echo strip_tags($job['extract']); ?></description>                                               
        </item> 
<?php           
    }
?>
    </channel>
</rss>

问题可能是您使用 PHP 函数header("Content-Type: application/rss+xml")来设置内容类型。

由于CodeIgniter不知道您正在执行此操作,因此它也会尝试设置Content-Type头。

尝试改用内置$this->output->set_content_type();方法(文档)

$this->output->set_content_type('application/rss+xml');