-
PHP - Teil 37 - XML (Teil 2): SimpleXML
14.12.2011 in PHP von daniel_koch
- Zum Downloadmanager hinzufügen
- PDF-Datei herunterladen
- Arbeitsmaterialien herunterladen
- Video
- Kommentare ansehen (1)
- Kategorie: PHP
- Erstellt mit Programmversion: PHP 5/6
- Kompatibel ab Programmversion: PHP 5
- Dateigröße (PDF): 1.2 MB
- Dateigröße (Arbeitsmaterial): 2 KB
- Bisherige Zugriffe: 115
Zum Downloadmanager hinzufügen PDF-Datei herunterladen (1.2 MB) Arbeitsmaterialien herunterladen (2 KB) Zugehöriges Video-Training ansehen
Tipp: Dieser Inhalt befindet sich auch auf der:
Lieber Gast …
… die Inhalte von PSD-Tutorials.de stehen nur registrierten Mitgliedern zur Verfügung. Damit wollen wir den Communitygedanken weiterführen. Als Mitglied trägst du - wenn auch nur im Kleinen - zum Puls der Community bei. Und nur so ist es möglich, weiterhin hochwertige Inhalte für alle bereitzustellen.
Vorteile der kostenlosen Mitgliedschaft
Mit der kostenlosen und schnell erledigten Registrierung erhältst du viele nachhaltige Vorteile, die wir dir hier in aller Kürze aufzeigen möchten:
- PSD steht für professionelles Know-how in den Bereichen Bildbearbeitung mit Photoshop, Fotografie, Webentwicklung, Layout- und Vektorbearbeitung, 3D-Bearbeitung mit Cinema 4D und Co.
- Über 3.000 Tutorials mit druckbarer PDF-Datei und teilweise den zugehörigen Arbeitsmaterialien
- Mehr als 1.900 Video-Trainings als Stream zur Direktanzeige und zum Download
- Abruf von über 2.200 Downloads zu Photoshop-Presets, 3D-Modellen, Grußkarten, Texturen & Co
- Zugriff auf ein sehr aktives Forum mit Antworten im Minutentakt
- Deine Daten sind sicher. Sie werden nicht weitergegeben! Die Mitgliedschaft kann jederzeit und ohne Aufwand wieder gelöscht werden.
-
Registriere dich bei uns und du erhältst die Selection-DVD mit über 24 Stunden Video-Trainings zu Photoshop, InDesign uvm. als Download gratis (sofern Newsletter aktiviert).
Reinschnuppern als Gast
Niemand kauft gerne die Katze im Sack, auch wenn sie kostenlos ist. Wir haben eine Handvoll Tutorials und Video-Trainings ausgesucht, die du auch als Gast ohne Registrierung ansehen kannst. Gefallen sie dir, stehen dir nach der Registrierung alle oben genannten Inhalte zur Verfügung.
- Download: Vektor-Logo (Eidechse)
- Download: Sepia-Vintage-Effekt-Aktion
- Download: Screenguide-Magazin als PDF zum Download
- Download: Spiegelungen 2
- Tutorial: Linien zum Glühen bringen
- Tutorial: Ballons aus einer Schublade
- Tutorial: Neue Pinsel erstellen leicht gemacht
- Tutorial: Kommerzielle Fotografie 01: Berufswunsch Fotografie
- Videotraining: Die Programmoberfläche und der Arbeitsbereich von Adobe InDesign
- Videotraining: Lichtscheinkontureneffekt mit Animation
- Videotraining: CorelDRAW X6 Grundlagen - Hilfsmittel Freihand, 2-Punkt-Linie, Bezier, B-Spline, Polylinie, Stift, 3-Punkt-Kurve
- Videotraining: CorelDRAW X6 Grundlagen: Hilfsmittel Form - Heranziehen, Zurückweisen
PHP-Workshop-DVD - Basics & Tricks
- 12 Stunden Video-Training, 480 PDF-Seiten Tutorials
- Basics, Formulare, Datenbanken, XML und Co.
- 4 Stunden Bonusmaterial zum Webdesign (mit Photoshop
Kommentare
Anleitung (Bilder + Extras werden nur für Mitglieder eingeblendet)
phpinfo() kontrollieren.
Ist SimpleXML verfügbar, gibt es dort einen Bereich SimpleXML.
Wie einfach sich SimpleXML einsetzen lässt, zeigt folgendes Beispiel:
<?xml version="1.0" encoding="utf-8"?> <Nachricht> <Von>medienwerke.de</Von> <An>psd-tutorials.de</An> <Datum>11.12.2011</Datum> <Betreff>PHP-tutorials</Betreff> <Text>Anbei ein weiteres PHP-Tutorial</Text> </Nachricht>

Der Inhalt dieses XML-Dokuments soll ausgegeben werden.
<?php
$xml = simplexml_load_file("email.xml");
echo $xml->getName() . "<br />";
foreach($xml->children() as $child){
echo $child->getName() . ": " . $child . "<br />";
}
?>

Zunächst wird über
simplexml_load_file() das XML-Dokument geladen. Dabei wird die XML-Datei direkt in ein Objekt überführt. Der Zugriff auf die einzelnen Elemente des Objekts kann nun wie bei jedem anderen Objekt erfolgen. Für den Zugriff auf die einzelnen Elemente gibt es verschiedene Möglichkeiten. Im aktuellen Beispiel wird der Name des ersten Elements ermittelt und ausgegeben. Der Zugriff auf dieses Element geschieht dabei über $xml->getName(). Anschließend wird auf die Kindknoten des ersten Elements zugegriffen. Dafür gibt es die Funktion children(). Mittels einer Schleife werden jeweils die Elementnamen und deren Inhalte untereinander ausgegeben.Dieses erste Beispiel hat gezeigt, wie einfach sich mittels SimpleXML XML-Dokumente in PHP verarbeiten lassen.
<?php
if (file_exists('email.xml')){
$xml = simplexml_load_file('email.xml');
echo $xml->Text[0];
} else {
exit("Die angegebene Datei konnte nicht geladen werden. ");
}
?>
Hier wird überprüft, ob es die zu ladende Datei tatsächlich gibt. Ist das der Fall, wird auf ein Element zugegriffen und dessen Inhalt ausgegeben.


Dieses
if-else-Konstrukt sollte immer die Basis eurer SimpleXML-Anwendungen bilden. Das Beispiel zeigt aber auch noch etwas anderes. Denn bislang wurde auf die Elemente über Funktionen (z. B. children()) zugegriffen. Ebenso könnt ihr aber auch Arrays verwenden.$xml->betreff[0];
0 angegeben. Soll auf das zweite Element zugegriffen werden, verwendet man den Index 1.Um zu verstehen, wie SimpleXML arbeitet, lohnt ein Blick auf die Ausgabe der Funktion
var_dump(). Mit var_dump() kann man sich nämlich den gesamten Inhalt eines Objekts anzeigen lassen.
<?php
if (file_exists("email.xml")) {
$xml = simplexml_load_file("email.xml");
var_dump($xml);
}
else {
("Die angegebene Datei konnte nicht geladen werden.");
}
?>
Die Ausgabe sieht folgendermaßen aus:

object(SimpleXMLElement)#1
Dieses Element besitzt nun wiederum fünf Unterelemente.
object(SimpleXMLElement)#1 (5)
Das ist wiederum der in Klammern stehenden Ziffer zu entnehmen.
Um welche Elemente es sich dabei handelt, welche Datentypen diese besitzen und welchen Inhalt sie haben, ist dann innerhalb der Klammern aufgeführt.
["Von"]=> string(14) "medienwerke.de" ["An"]=> string(16) "psd-tutorials.de" ["Datum"]=> string(10) "11.12.2011" ["Betreff"]=> string(13) "PHP-tutorials" ["Text"]=> string(31) "Anbei ein weiteres PHP-Tutorial"
Komplexere Dokumente verarbeiten
Zugegebenermaßen bildeten bei den bisherigen Beispielen einfache XML-Dokumente die Basis. Damit es in diesem Punkt nicht zu Missverständnissen kommt, folgt hier ein komplexeres Beispiel. In der Tat kann man mit SimpleXML auch umfangreichere Dokumente verarbeiten. Positiv kommt außerdem hinzu, dass in SimpleXML beispielsweise auch ein XPath-Prozessor integriert ist. Dieser Prozessor ermöglicht den Zugriff auf Elemente über XPath. Mit XPath (http://www.w3.org/TR/xpath20/) kann man mit einer speziellen Syntax beliebige Elemente bzw. Knoten innerhalb eines Dokuments adressieren. Dabei ist XPath sehr mächtig, erlaubt also auf vielfältige Arten den Elementzugriff.Auch dieser Aspekt soll natürlich wieder anhand eines Beispiels gezeigt werden. Zunächst das eigentliche XML-Dokument:
<?xml version="1.0" encoding="utf-8"?> <katalog> <buch isbn="9783462025866"> <titel>Fever Pitch</titel> <autor>Hornby, Nick</autor> <verlag>Kiepenheuer und Witsch</verlag> <preis>9,95 Euro</preis> <bibliografisches> <seiten>335</seiten> <einband>Paperback</einband> <auflage>12</auflage> </bibliografisches> </buch> <buch isbn="9782264039378"> <titel>American Psycho</titel> <autor>Ellis, Bret Easton</autor> <verlag>Kiepenheuer und Witsch</verlag> <preis>9,95 Euro</preis> <bibliografisches> <seiten>548</seiten> <einband>Paperback</einband> <auflage>9</auflage> </bibliografisches> </buch> </katalog>
isbn. Es handelt sich hier um eine typische Katalogdatei, in der verschiedene Bücher hinterlegt sind. (Das Beispiel ist so übrigens nicht aus der Luft gegriffen, sondern kann tatsächlich die Basis für den Aufbau eines Buchkatalogs bilden).Auch hier zunächst wieder die Ausgabe im Browser:

Im aktuellen Beispiel sollen nicht alle Elemente ausgegeben werden. Stellt euch vielmehr einen Shop vor, in dem ein Kunde über eine Suchmaske nach einem Buch sucht.
<form method="get" action="xpath.php"> <label> <input type="text" name="isbn" id="isbn" /> </label> <label> <input type="submit" name="button" id="button" /> </label> </form>
Diese Büchersuche wird über die ISBN-Nummer ausgelöst. Und genau diese ISBN-Nummer ist es, die jeweils dem Attribut
isbn zugewiesen wird. Entscheidend ist hier also jeweils das Attribut sbn innerhalb der einzelnen buch-Elemente. (Da eine ISBN immer eindeutig ist, also nur einmal vergeben wird, lassen sich die einzelnen Bücher eben auch eindeutig anhand einer ISBN identifizieren).<buch isbn="23-12-3333">
Die Suchmaske besteht lediglich aus einem Eingabefeld.

Wird dort die ISBN eingetragen und auf Suchen geklickt, ruft das eine PHP-Datei auf. Dem URL dieser Datei wird beim Aufruf der Parameter
isbn übergeben. Als Wert besitzt dieser Parameter die in das Suchfeld eingetragene ISBN.Das Skript sieht folgendermaßen aus:
<?php
$isbn = $_GET['isbn'];
if (file_exists("katalog.xml")) {
$xml = simplexml_load_file("katalog.xml");
$path ="/katalog/buch[@isbn=".$isbn."]";
$path2 ="/katalog/buch/bibliografisches";
$result = $xml->xpath($path);
$result2 = $xml->xpath($path2);
if (!$result) {
echo "Das Buch ist noch nicht in unserem Katalog.";
}
else {
echo "<h2>".$result[0]->titel."</h2>";
echo "<p><b>".$result[0]->autor."</b></p>";
echo "<p>".$result[0]->preis."</p>";
echo "<p>".$result2[0]->seiten." Seiten</p>";
}
}
else {
exit("Die angegebene Datei konnte nicht gefunden werden.");
}
?>
Die einzelnen Skriptbestandteile kennt ihr weitestgehend aus den vorherigen Beispielen. Neu ist zunächst einmal folgende Zeile:
$path ="/katalog/buch[@isbn=".$isbn."]";
Dabei handelt es sich um einen typischen XPath-Ausdruck. Dieser Ausdruck überprüft, ob es unterhalb von
katalog ein Element buch gibt, welches das Attribut isbn besitzt, dessen Wert mit der übergebenen ISBN-Nummer übereinstimmt.
Wird das Buch hingegen gefunden, geschieht der Zugriff auf die Inhalte der einzelnen Elemente über die bereits vorgestellte Array-Variante.

Auf diese Weise könnte man jetzt seinen eigenen Shop auf Basis von XML und SimpleXML aufbauen.
-
Reklame
-
-
- Bei der Bildbearbeitung im Photoshop wird das Billd immer wieder schwarz
- Apache redirect mit .htaccess
- Offline Ordner einlesen
- Dynamisches Logo anhand von URL!?
- Fette Kontur in Pfade umwandeln ?
- exportierte Videos sind zu groß
- Earth & Sky Photo Contest
- Bei falschem Login erfolgt weiterleitung
- Hallo :-)
- Droplets werden nicht ordnungsgemäß abgearbeitet
- Keine Internetverbindung nach PC Start
- CSS content bei Link verschwindet (Opera)
- CHM verliert Inhalt bei Verschieben auf andere Festplatte
- Erfahrungen mit der OfG / Online-Schule für Gestaltung
- Kalender mit Import-Funktion
- 15 sec Spot für Website
- mit hover anderes Element steuern
- Kelvin Einstellungen
- Farbunterschiede beim Einfügen
- Farbe der Selbstillumination
-
-
Aktuelles Commag
Anzeige
-
Anzeige


tampen
30.10.2012 - 12:55
...leichtverständlich und nachvollziehbar erklärt.