|
Auslesen von Attributen mit der Funktion attributes() - Teil 1Übersicht / Seite:
Das Auslesen von Attributen bzw. deren Namen und Werte aus
einem XML-Dokument mit Hilfe von PHP und SimpleXML bereitet Einsteigern zuweilen leichte
Probleme, ist jedoch mit etwas Übung nicht schwerer als die Verarbeitung des restlichen
Inhaltes einer XML-Datei. Nachfolgend einige unterschiedliche Wege, um mit Hilfe von PHP
und SimpleXML sowie den Funktionen attributes() und children() die Namen und Inhalte von
Attributen aus einem XML-Dokument auszulesen und weiter zu verarbeiten. <?xml version="1.0" encoding="ISO-8859-1" ?> - <Response> - <Request> - <Fluesse> <Fluss Name="Nil" Laenge="6.852"/> <Fluss Name="Amazonas" Laenge="6.448"/> <Fluss Name="Jangtsekiang" Laenge="6.380"/> <Fluss Name="Mississippi" Laenge="3.778"/> <Fluss Name="Jenissei" Laenge="5.540"/> <Fluss Name="Ob" Laenge="3.650"/> <Fluss Name="Amur" Laenge="2.824"/> </Fluesse> </Request> </Response> Bevor eine Datei geöffnet, eingelesen und verarbeitet
werden kann, sollte erst einmal deren Vorhandensein mit der PHP-Funktion file_exists()
überprüft werden. Zumindest steht es so oftmals geschrieben. <?php $datei = "fluesse.xml"; if (file_exists($datei)) { $Response = simplexml_load_file($datei); print_r($Response); } else {echo "Fehler beim Laden der Datei: ".$datei."\n"; } ?> Soweit, so gut. Leider hat die Angelegenheit einen
Schönheitsfehler, denn mit file_exists() lassen sich nur Dateien auf Vorhandensein
überprüfen, die auf dem eigenen Server liegen. Zur Prüfung von entfernten Dateien ist
die Funktion file_exists() schlicht und einfach unbrauchbar. Doch ein per Web Services
angefordertes XML-Dokument liegt nur selten auf dem eigenen Server. Um dennoch für den
Fehlerfall gerüstet zu sein, sollten PHP seitige Fehlermitteilungen mit @ abgefangen
werden, jedoch nicht ohne mit exit() oder dem gleichwertigen Sprachkonstrukt die() die
weitere Ausführung des Scripts bzw. den weiteren Programmablauf beim Auftreten eines
Fehlers während des Ladevorgangs zu unterbrechen und eine eigene Fehlermitteilung
auszugeben. <?php $datei = "http://www.seo-welten.de/fluesse.xml"; $Response = @simplexml_load_file($datei) or die ("Fehler beim Laden der Datei: ".$datei."\n"); print_r($Response); ?> Eine weitere Möglichkeit beim Laden von entfernten Dateien
besteht in der Überprüfung des Rückgabewertes, da die Funktion simplexml_load_file() im
Fehlerfall mit False antworten würde. Doch auch bei dieser Variante sollten PHP
Fehlermitteilungen mit @ abgefangen und eigene Meldungen ausgegeben werden. <?php $datei = "http://www.seo-welten.de/fluesse.xml"; if (@simplexml_load_file($datei) !== false){ $Response = simplexml_load_file($datei); print_r($Response); } else {echo "Fehler beim Laden der Datei: ".$datei."\n";} ?>
|
|
Immer dann, wenn nur ein bestimmter Wert von einem Attribut
oder ein bestimmtes Wertepaar ausgelesen werden soll und zur Auswahl ein IF-Statement oder
eine Switch-Case Fallunterscheidung verwendet werden soll, müsste die Vorgehensweise
geändert werden. Nachfolgend ein Beispiel, in dem mit Hilfe der Funktion strpos()
abgefragt wird, ob sich der Name Jenissei als Wert in einem Attribut befindet und nur das
Wertepaar ausgegeben wird, welches diese Bedingung erfüllt.
Drittes Codebeispiel mit der Funktion attributes():
<?php $datei = "fluesse.xml"; $Response = @simplexml_load_file($datei) or die ("Fehler beim Laden der Datei: ".$datei."\n"); $laufebis = count($Response->Request->Fluesse->Fluss); for ($laufe = 0; $laufe < $laufebis; $laufe++) { $alpha = $Response->Request->Fluesse->Fluss[$laufe]->attributes(); if (strpos($alpha["Name"], "Jenissei") !== false){ echo $alpha["Name"]." - ".$alpha["Laenge"]." km<br>\n"; } } ?>
Dieses Codebeispiel würde folgende Ausgabe bewirken:
Jenissei - 5.540 km
Nachdem die bisherigen Beispiele auf die PHP-Funktion attributes() aufbauten, wird auf der nächsten Seiten noch ein zweiter und dritter Weg vorgestellt, wobei in den ersten beiden Beispielen die Funktion children() zur Anwendung kommt und im letztem Beispiel die Knoten eines XML-Dokuments mit Hilfe von SimpleXML und XPath direkt angesprochen werden.
weiterlesen: Auslesen von Attributen - Teil 2 | Teil 3
Navigation |
Finden und
gefunden werden ...
Autoritäten im
Internet
Die Kehrseite
Das Wesen
Zukunftsaussichten
Studien & Strategien
Verbreitung &
Bedeutung
Internet & Medien
- Optimierung -
Einstieg Optimierung
Erfolg oder
Misserfolg
Webcoding |
Übersicht
Einführung ins Thema
Amazon Web
Service
Request und Response
Anfragen und Anträge
Weitere Beispiele
Einfaches Script - Unicode
Einfaches Script - ISO
Weitere Einzelheiten
Images/Bilder
prüfen
Einbinden von Dateien
RegEx
Reguläre Ausdrücke