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.

Jetzt kostenlos registrieren!

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.

Jetzt kostenlos registrieren!

Passend zum Inhalt empfehlen wir:

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
Jetzt informieren

Kommentare

  • Alternative Portrait von tampen

    tampen

    30.10.2012 - 12:55

    ...leichtverständlich und nachvollziehbar erklärt.

Achtung: Du kannst den Inhalt erst nach dem Login kommentieren.

Anleitung (Bilder + Extras werden nur für Mitglieder eingeblendet)


In PHP 5 ist SimpleXML standardmäßig enthalten. Ob das bei euch der Fall ist, könnt ihr wie gewohnt über die Funktion phpinfo() kontrollieren.

Bilder


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>


 
Hier wurde ein einfaches XML-Dokument definiert.

Bilder


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 />";
}
?>


 
Das Ergebnis sieht folgendermaßen aus:

Bilder


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.

 
Es empfiehlt sich übrigens, immer zu überprüfen, ob die angegebene XML-Datei überhaupt vorhanden ist. So lassen sich mögliche Fehler bei der Ausgabe der Elemente verhindern. Wie sich so etwas umsetzen lässt, zeigt das folgende Beispiel:

<?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.

Bilder


 
Wenn der Zugriff auf die Datei nicht gelingt, gibt es eine Fehlermeldung.

Bilder


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];


 
Will man auf das erste Element zugreifen, wird der Index 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:

Bilder


 
Hier ist deutlich die Struktur des XML-Dokuments zu erkennen. So bedeutet der erste Teil der ersten Zeile, dass das Dokument genau aus einem Element besteht.

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>


 
Das Beispiel weist einige Elemente mehr auf. Außerdem gibt es innerhalb dieses Dokument das Attribut 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:

Bilder


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.

 
Das dazugehörende Formular sieht folgendermaßen aus:

<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.

Bilder


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.

 
Ist das nicht der Fall, gibt es eine Fehlermeldung.

Bilder


Wird das Buch hingegen gefunden, geschieht der Zugriff auf die Inhalte der einzelnen Elemente über die bereits vorgestellte Array-Variante.

 
Wie die folgende Abbildung zeigt, wurde exakt der Datensatz ausgegeben, nach dem gesucht wurde.

Bilder


Auf diese Weise könnte man jetzt seinen eigenen Shop auf Basis von XML und SimpleXML aufbauen.

vBulletin 0.042 ZF-App 0.509 Total 0.551