2011-01-05 5 views
1

Je suis en train de générer une sortie XML avec Zend_Framework, mais cette mauvaise chose cesse d'apparaître:erreur de génération 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"?> 
^ 

Pour autant que je sais qu'il n'y a pas de-espaces blancs dans l'un de mes fichiers include , et même s'il y en avait, je pense que la fonction ob_clean() aurait dû en prendre soin. Voici mon code:

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); 
    } 

Toute aide ou suggestions?

+0

Il suffit de remarquer que vous créez un document avec la version 1.0, mais l'erreur que vous nous montrez a la version 1.2. –

+0

Mon mauvais, était déconner quand j'ai posté le message d'erreur. Je l'ai mis à jour! –

Répondre

1

Premier test, si des espaces supplémentaires apparaissent dans toutes les actions de votre application.
Si oui, vérifiez
/public/index.php et /application/bootstrap.php
pour les espaces de fin avant <?php ou vieux-gauche sur les déclarations de débogage.

Edit: transféré les informations utiles des commentaires à la réponse

+0

ZF 1,10. Et le visionner via Firefox. –

+0

tout va bien avec 1.10.6 pour moi. avez-vous inspecté les contens du buffer de sortie pour le moment? Je suggère de chercher une sortie avant que ZF commence la mise en mémoire tampon de sortie. faire d'autres pages (sans xml) ont également ces espaces blancs préfixés? Si oui /public/index.php et /application/bootstra.php seraient les premiers à chercher. Les vieilles instructions de débogage sont généralement la racine de ces fragments. –

+0

Mais ne devrait pas avoir le 'ob_clean()' pris soin de l'espace blanc? –