SCHLOEBE.DEPersonal Portfolio of Oliver Schlöbe

XML-Daten auslesen mit XML-Line

Da ich kürzlich nach einem gescheiten XML-Parser gesucht habe und sowohl in diversen Foren als auch bei Google nichts gefunden habe, habe ich Ausschau nach einer XML-Klasse gehalten, um beispielsweise die XML-Daten von last.fm (für Top Artists etc.) auslesen zu können.

Gefunden habe ich nun XML-Line. Was ist XML-Line? XML-Line ist eine PHP-Klasse für die Abfrage und Änderung von XML-Dokumenten, die eventbasiert funktioniert und die in PHP integrierten Expat-Parserfunktionen nutzt.

Die aktuelle stabile Version von XML-Line findet man hier!

Kommen wir nun zum Code-Teil. Zunächst der komplette Code, die Erläuterungen folgen danach, aber komplex ist der Code nicht wirklich. 😉

get_data(0,"name");
$result = $mylines->xml_stream();
$mylines2->get_data(0,"url");
$result2 = $mylines2->xml_stream();
for ($i=0;$i<15;$i++) {
  echo "".$result[0][$i][0]."\n";
}
?>

Zu Beginn des Codes wird zunächst die XML-Line-Klasse aufgerufen, der Pfad zur Datei dorthin muss natürlich jeder selbst setzen. Die folgende Zeile erzeugt eine Instanz dieser Klasse. Der Parameter gibt an, auf welche XML-Datei zugegriffen wird.

$mylines->get_data(0,"name");

Die Methode get_data() ermöglicht das Auslesen von Elementen. In diesem Fall wird der Parameter auf 0 gesetzt, um alle name-Elemente in die Suche einzubeziehen.

Da wir alle Ergebnisse anzeigen wollen, lassen wir diese in einer for-Schleife nacheinander ausgeben:

for ($i=0;$i<15;$i++)

Den Wert des zweiten Parameters (hier: 15) kann man natürlich anpassen, denn er steht für die Anzahl der Datensätze, die ausgegeben werden.

Innerhalb der Schleife erfolgt die Ausgabe. Diese kann man beliebig formatieren, wichtig ist aber das Ergebnis-Array:

$result[0][$i][0]

Der Index 0 des Arrays enthält jeweils ein Ergebnis der Methode get_data(). Innerhalb der Schleife erhöht sich die Hilfsvariable jeweils um 1 bis sie bei 15 angekommen ist, oder anders ausgedrückt: Bis das 15. Ergebnis ausgegeben wurde.

Somit kann man wunderbar bestimmte XML-Werte ansprechen, durchsuchen und formatiert ausgeben. Es gibt sicherlich etliche weitere Möglichkeiten, XML-Daten auszulesen, aber für meine Zwecke für last.fm reicht es. Zu sehen ist das Ganze hier.

Ich hoffe, das hilft dem einen oder anderen. 😉

2 Responses

  1. Hi Oliver,
    super! dannach habe ich gesucht.
    kannst du mir sagen ob das ganze auch für das Auslesen von Artistinfos (Biographie) dienlich seien kann. Also ich bräuchte so etwas für einen Veranstaltungskalender auf http://www.thealternative.de/indieville-kassel/
    um als Zusatz zu den Bandnamen usw. die Info der jeweiligen Band im jeweiligen Feld darzustellen. Viele Grüße Torsten

  2. moin, danke für deses kleine tut, ich hab nur ein problem dabei, ich möchte nur den Interpretennamen und den Musiktitel angeben (ich lese die xml für die wochencharts aus) ich möchte dabei nur den ersten Titel ausgeben um so dann “aktuelles lieblingslied” ausgeben zu können.
    ich hab das echo so geschrieben:
    echo “.$result[0][$i][0].” – “.$result2[0][$i][0].”;

    wobei $result2 jetzt das xml feld “name” durchsucht, ich bekomme nur keine ausgabe,
    außerdem bearbeitet er bei mir diese anfrage bis zu 10 sekunden lang, kann ich das irgendwie beschleunigen?

    Danke schonma
    Nils