dedlfix: XMLSeite mit PHP parsen

Beitrag lesen

echo $begrüßung;

Hier die bessere Lösung:
<?xml version="1.0" standalone="yes"?>
<xml>

[...]

</xml>

Das Root-Element war als "termine" benannt aussagekräftiger als das "xml".

<?php
  $xml = simplexml_load_file('test.xml');
  $i=0;
  while (@$str=$xml->termin[$i]->ort) {
    print $xml->termin[$i]->name."/";
    print $xml->termin[$i]->ort."\n";
    $i++;
  }

SimpleXML arbeitet viel mit PHP-Magie und mit Funktionalität aus der SPL. Beispielsweise sorgt die magische Funktion __toString() bei einem Zugriff auf ein Objekt in einem String-Kontext für eine Ausgabe eines geeigneten Stringwertes. Die SPL erlaubt es, einer Klasse einen Iterator hinzuzufügen. Man kann dann ein Objekt dieser Klasse einem foreach als Argument übergeben. Somit läuft man nur die tatsächlichen (vom Iterator zur Verfügung gestellten) Elemente an. Deine Lösung greift solange zu, bis sie ins Leere fasst. Der Zugriff ins Leere wird nicht umsonst mit einer Meldung geahndet.

foreach ($xml->termin as $termin)
    echo $termin->name, '/', $termin->ort, "\n";

Das PHP-Handbuch führt im SimpleXML-Kapitel eine Anzahl Beispiele auf, unter anderem genau für solch einen Fall.

Die Verwendung der "Magie" in SimpleXML sorgt in einigen Situationen für ein ungewöhnliches Verhalten wie man es von "normalem" PHP nicht gewohnt ist. Man sollte sich also an die im Handbuch aufgeführten Anwendungsbeispiele halten, um Überraschungen zu vermeiden.

echo "$verabschiedung $name";