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