解析错误 - 使用CodeIgniter创建RSS源

时间:2010-12-03 04:13:20

标签: php xml codeigniter rss

嘿伙计们,我正在使用codeigniter创建一个rss feed,我得到了具体的错误: XML解析错误:文档元素之后的垃圾 地点:http://mysite.com/feeds/latest

经过Google搜索并无法找到我的问题的解决方案(尽管有大量结果)我来这里寻求建议。

我有

<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>

关注我的网站标题,链接,说明,pubdate,dc:日期标记。

跟着一个foreach语句循环结果如下:

<?php foreach($feedResults as $feedItem): ?>
 <item>
       <title><?php echo $feedItem->title; ?></title>
          <link><?php echo site_url('/'.$feedItem->ID) ?></link>
          <guid><?php echo site_url('/'.$feedItem->ID) ?></guid>
    <description>descri[</description>
          <pubDate><?php echo date ('r', $feedItem->time());?></pubDate>
    </item>        
    <?php endforeach; ?>

除了检索$ feedResults之外,我的codeigniter控制器没有做太多工作,将标头设置为: header(“Content-Type:text / xml”); 然后将结果传递给视图。

谢谢你们。

2 个答案:

答案 0 :(得分:1)

如果您使用.html扩展名保存RSS Feed,您会发现它根本不是RSS,这是一个HTML错误页面:

  

ErrorException [Parse Error]:语法错误,意外T_STRING

     

APPPATH / views / feeds_latest_view.php [1]

1 <?xml version="1.0" encoding="UTF-8"?>
2 <rss xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
3   <channel>
4 
5     <title>Amazon.com Gold Box Deals</title>
6     <link>http://www.amazon.com/gp/goldbox</link>
     
      
  1. {PHP内部调用}»MY_Exceptions :: shutdown_handler(arguments)
  2.   

我的猜测是你启用了PHP short_tags,这意味着<?<?php的简写并打开了一个PHP代码块。当PHP看到<?xml尝试将XML处理指令解释为PHP代码块时,PHP就会窒息。

要解决此问题,请在php.ini中关闭short_tags。或者通过编写PHP代码来发布指令来解决它:

<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?>

答案 1 :(得分:0)

“位置:http://mysite.com/feeds/latest”看起来像HTTP标头(位置标头是重定向的工作方式)。您是否将重定向到另一个URL的URL传递给无法跟踪重定向的XML解析器?