8. Oktober 2008

Verarbeiten und Debugging von XML in PHP

Beim Verarbeiten von XML in PHP mit dem DOM-Modul kann man sich schnell verwirren lassen, wenn man versucht, den Inhalt des Objektes mit var_dump() o.ä. auszugeben. Obwohl “Poor Man’s Debugging” in einem Projekt eher nicht zu empfehlen ist, manchmal möchte man beispielsweise einfach nur ein kleines Konverter-Skript herunterschreiben und dafür nicht ein vollständiges Projekt aufsetzen.

Bei der Benutzung von var_dump() oder print_r() mit DOMDocument- oder DOMElement-Objekten scheint das Objekt leer zu sein: object(DOMElement)#1 (0) { }

Vermutlich liegt es daran, dass DOM ein C-Modul und keine PHP-eigene Funktionalität ist. Dadurch sind für PHP die dahinterliegenden Datenstrukturen aus C nicht sichtbar und werden beim Iterieren nicht ausgegeben. Die Lösung für DOMDocument besteht in der Methode saveXML(). Diese gibt das entsprechende Dokument als XML-String zurück und kann so wunderbar ausgegeben und analysiert werden.

Aber was ist mit einem einzelnen DOMElement? Hier hilft folgender Trick über das zugehörige Dokument:

echo $domElement->ownerDocument->saveXML($domElement);

Alternativ natürlich auch, wenn man gerade das DOMDocument verfügbar hat:

echo $domDocument->saveXML($domElement);

Kategorien: Softwareentwicklung // Jörn Wagner // 10:45

Keine Kommentare »

Noch keine Kommentare

RSS Feed für Kommentare zu diesem Artikel. TrackBack URL

Hinterlasse einen Kommentar

Connect with Facebook