Vor Kurzem hatte ich das Problem, dass beim Parsen eines XMLs, das von XML-RPC (PHP) generiert wurde, NSXMLParser den Fehler 64 (NSXMLParserMisplacedXMLDeclarationError) warf. Nachdem die Validierung des XMLs erfolgreich war, versuchte ich das PHP mit Hilfe von anderen Parseren zu verarbeiten, was ohne Probleme funktionierte. Dennoch meckerte der NSXMLParser.

Die Lösung des Problems war denkbar einfach, umso länger brauchte ich allerdings, bis ich sie gefunden hatte.

Ein PHP-Dokument beginnt immer mit <?php und kann mit ?> enden. Dieses End-Tag ist optional in PHP und sollte in allen PHP-Dateien weggelassen werden, da sonst ungewünschte Leerzeichen am Ende der Datei entstehen können, die wiederum Probleme verursachen können. Genau dies war in meinem Fall die Lösung. Ich hatte in einer Datei, die per include() eingebunden war ein PHP End-Tag stehen, das Leerzeichen im XML verursachte, mit denen der NSXMLParser nicht umgehen konnte. Nachdem ich das Tag entfernt hatte, funktionierte alles ohne Probleme.