PHP5 SimpleXML getParent leicht gemacht

SimpleXML ist eine unter PHP 5 sehr beliebte XML-API. Der Zugriff auf Elemente und Attribute geht sehr schnell und einfach.

Auf der Suche nach einer Methode um mit SimpleXML vom aktuellen Knoten den Vorgängerknoten zu erhalten (also eine Art SimpleXML::getParent(); ) wurde ich leider nicht fündig, habe aber mit XPath eine denke ich elegante Lösung gefunden:

Ein Beispiel:

<wurzel>
<buch>
<titel>Das ist mein Buch</titel>
<autor>Hans Wurst</autor>
</buch>
<buch>
<titel>Noch ein Buch</titel>
<autor>Martha Musterfrau</autor>
</buch>
</wurzel>

Dann bekommt man das zweite Buch bekanntlich wie folgt:

<?php
$simple=simplexml_load_file(‚/beispiel.xml‘);
$buch = $simple->wurzel->buch[1];
echo $buch->titel.‘ wurde geschrieben von ‚.$buch->autor;
?>

Und um nun zum Beispiel  von $buch wieder zur Wurzel zu kommen (also ein getParent) hilft der folgende XPath-Trick:

<?php
$simple=simplexml_load_file(‚/beispiel.xml‘);
$buch = $simple->wurzel->buch[1];
echo $buch->titel.‘ wurde geschrieben von ‚.$buch->autor;
$buch=$buch->xpath(‚../..‘);
?>