Die SimpleXML Extension bietet ein besonders einfaches und leicht zu
handhabendes Toolset, um XML in ein Objekt zu konvertieren, das mit
normalen Eigenschafts-Selektoren und Array-Iteratoren bearbeitet werden
kann.
Viele Beispiele in dieser Referenz benötigen einen XML String. Anstatt
diesen String in jedem Beispiel zu wiederholen, haben wir ihn als File
abgelegt, das wir in den Beispielen inkludieren. Diese eingebundene Datei
zeigen wir Ihnen im folgenden Beispiel. Alternativ dazu können Sie ein XML
Dokument erstellen und es mit simplexml_load_file()
einlesen.
Beispiel 1. Einzubindende Datei example.php mit XML String
<?php $xmlstr = <<<XML <?xml version='1.0' standalone='yes'?> <movies> <movie> <title>PHP: Behind the Parser</title> <characters> <character> <name>Ms. Coder</name> <actor>Onlivia Actora</actor> </character> <character> <name>Mr. Coder</name> <actor>El ActÓr</actor> </character> </characters> <plot> So, this language. It's like, a programming language. Or is it a scripting language? All is revealed in this thrilling horror spoof of a documentary. </plot> <rating type="thumbs">7</rating> <rating type="stars">5</rating> </movie> </movies> XML; ?>
Die Einfachheit von SimpleXML ist besonders deutlich erkennbar, wenn man
einen String oder eine Zahl aus einem XML Dokument extrahieren will.
Beispiel 2. <plot> ermitteln
<?php include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
echo $xml->movie[0]->plot; // "So this language. It's like..." ?>
Beispiel 3. Auf nicht-eindeutige Elemente per SimpleXML zugreifen
Existieren mehrere Instanzen eines Elements als Kinder eines einzigen
Elternelements, lassen sich normale iterative Techniken einsetzen.
<?php include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
/* Für jeden <movie> Konten geben wir ein separates <plot> aus. */ foreach ($xml->movie as $movie) { echo $movie->plot, '<br />'; }
?>
Beispiel 4. Attribute verwenden
Bis jetzt haben wir nur das Auslesen von Elementnamen und ihrer Werte
betrachtet. SimpleXML kann aber auch auf die Attribute eines Elements
zugreifen. Der Zugriff auf die Attribute eines Elements funktioniert
genauso, als würden Sie die Elemente eines Array
ansprechen.
<?php include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
/* Zugriff auf die <rating> Knoten des ersten Films * Die Bewertungsskala wird zusätzlich ausgegeben. */ foreach ($xml->movie[0]->rating as $rating) { switch((string) $rating['type']) { // Verwende Attribute als Element-Indizes case 'thumbs': echo $rating, ' thumbs up'; break; case 'stars': echo $rating, ' stars'; break; } } ?>
Beispiel 5. Vergleichen von Elementen und Attributen mit Text
Um ein Element oder ein Attribut mit einem String zu vergleichen oder an
eine Funktion zu übergeben, die einen String als Parameter benötigt,
müssen Sie das Element respektive das Attribut in einen String casten.
Verwenden Sie dafür (string), ansonsten behandelt PHP
das Element als Objekt.
<?php include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
if ((string) $xml->movie->title == 'PHP: Behind the Parser') { print 'Mein Lieblingsfilm.'; }
htmlentities((string) $xml->movie->title); ?>
Beispiel 6. XPath verwenden
SimpleXML verfügt über einen eingebauten XPath-Support. So
finden Sie alle <character> Elemente:
<?php include 'example.php'; $xml = new SimpleXMLElement($xmlstr);
foreach ($xml->xpath('//character') as $character) { echo $character->name, 'gespielt von ', $character->actor, '<br />'; } ?>
'//' wird hier als Wildcard verwendet. Um absolute
Pfadangaben zu verwenden, lassen Sie einen der Slashe weg.
Beispiel 7. Werte setzen
Die Daten in SimpleXML müssen nicht konstant sein. Das Objekt erlaubt
die Veränderung all seiner Elemente.
<?php include 'example.php'; $xml = new SimpleXMLElement($xmlstr);
Der vorstehende Code erzeugt ein neues XML-Dokument gleich dem Original,
mit der Ausnahme, dass das neue XML von Ms. Coder auf Miss Coder verändert
wurde.
Beispiel 8. Elemente und Attribute hinzufügen
Seit PHP 5.1.3 verfügt SimpleXML über eine vereinfachte Möglichkeit,
Kindelemente und Attribute hinzuzufügen.
<?php include 'example.php'; $xml = new SimpleXMLElement($xmlstr);
Die obige Code gibt ein XML-Dokument aus, das auf dem Original basiert,
aber einen neuen Charakter und ein weiteres Rating enthält.
Beispiel 9. DOM Interoperabilität
PHP hat einen Mechanismus, um XML-Knoten zwischen dem SimpleXML und dem
DOM Format zu konvertieren. Das Beispiel zeigt, wie man ein DOM Element
in SimpleXML verwandelt.
<?php $dom = new domDocument; $dom->loadXML('<books><book><title>blah</title></book></books>'); if (!$dom) { echo 'Fehler beim Parsen des Dokuments'; exit; }
Dieses Tutorial beschreibt sehr gut die Wirkunsweise von objektorientiertes Programmieren. Also bestens geeignet um das objektorientierte Programmieren zu verstehen.
In mehreren Tutorials wird der Zugriff auf Facebook Daten mittels Graph API, FQL und REST API erklärt. Alle Codebeispiele liegen zum Ausprobieren in einem SVN, bzw. github Repository bereit.