2011-01-05 82 views
1

我试图生成Zend_Framework一个XML输出,但这个讨厌的事情不断弹出:XML生成错误

XML Parsing Error: XML or text declaration not at start of entity 
Location: http://cart/index/kurpirkt 
Line Number 2, Column 1:<?xml version="1.0" encoding="utf-8"?> 
^ 

据我所知没有白空间在我的任何包含文件,即使有,我认为ob_clean()函数应该照顾它。这里是我的代码:

public function kurpirktAction() 
    { 
     ob_clean(); 
     // XML-related routine 
     $xml = new DOMDocument('1.0', 'utf-8'); 
     $xml->appendChild($xml->createElement('foo', 'bar')); 
     $output = $xml->saveXML(); 

     // Both layout and view renderer should be disabled 
     Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->setNoRender(true); 
     Zend_Layout::getMvcInstance()->disableLayout(); 

     // Setting up headers and body 
     $this->_response->setHeader('Content-Type', 'text/xml; charset=utf-8') 
       ->setBody($output); 
    } 

任何帮助或建议?

+0

就注意到,创建文档1.0版本,但都出现了我们在错误的版本1.2。 – 2011-01-05 21:35:13

+0

我的不好,当我发布错误消息时,正在搞乱。我更新了它! – 2011-01-05 21:38:32

回答

1

首先测试一下,如果在你的应用程序的所有动作中发生额外的空白。
如果是这样,检查前<?php或老左在调试语句结尾空格
/public/index.php/application/bootstrap.php

编辑:转移从评论的有用的信息,答案

+0

ZF 1.10。并通过Firefox查看它。 – 2011-01-06 04:15:29

+0

一切都很好,我为1.10.6。 您是否检查过输出缓冲区的内容? 我建议在ZF启动输出缓冲之前寻找一些输出。其他页面(不含xml)也有这些前缀空格?如果/ public/index.php和/application/bootstra.php是第一个查找的。通常旧的调试语句是这种分裂的根源。 – 2011-01-06 05:30:33

+0

但不应该有'ob_clean()'照顾空白? – 2011-01-06 12:40:18