2009-06-15 9 views
3

J'ai créé un flux RSS en utilisant Zend_Feed.RSS Feed créé avec Zend_Feed - les invites de firefox à télécharger ne s'affichent pas en tant que RSS

Il semble avoir fonctionné en ce que le XML résultant semble bon. Mon problème est que Firefox ne le reconnaîtra pas comme un flux RSS et me demande plutôt de télécharger le XML brut.

Essayer dans IE donne l'erreur « ce flux contient des erreurs de code » avec les informations supplémentaires suivantes:

Invalid xml declaration. Line: 2 Character: 3

< ? xml version="1.0" encoding="UTF-8" ?>

Toute aide grandement appréciée.

+0

Notez que je place l'espace entre le William

Répondre

2

La déclaration xml doit figurer sur la première ligne absolue de la sortie. C'est à dire. pas de lignes vides ou d'espaces avant la balise xml-declaration.

Ceci est valable:

<?xml version="1.0" encoding="UTF-8" ?> 

Ce n'est pas:

<?xml version="1.0" encoding="UTF-8" ?> 
+0

Merci - il semble que ce soit le problème car il y a une ligne vide en premier. Je ne sais pas pourquoi Zend fait ça ... – William

+0

Ce n'est peut-être pas Zend - assurez-vous de ne pas avoir d'espace errant dans votre PHP. – kranzky

+0

Vous avez raison - il semble qu'une ligne vide après la fermeture?> À la fin du fichier PHP causait le problème. Merci beaucoup. – William

1

Vérifiez si <?xml version="1.0" encoding="utf-8"?> est la première ligne dans le fichier d'alimentation. Pas de lignes vides ou d'espaces!

0

Si PHP crache des avis/avertissements ou autres, ceux-ci malformeront le flux. Essayez de régler error_reporting à zéro avant l'alimentation est envoyé à l'essai:

bonne règle
error_reporting(0); 
+0

Sinon, définissez le rapport d'erreur au maximum, et résolvez le problème, plutôt que de le cacher. error_reporting (E_ALL | E_STRICT); –

0

de base lors de l'utilisation des fichiers de classe php et tels, jamais ?> vos fichiers de classe. N'utilisez que ?> dans des fichiers de type template où vous allez avoir des sorties régulières par la suite. Tous les paquets majeurs le font maintenant exactement pour le raisonnement ci-dessus.