Grundlegende Verwendung von SimpleXML

Viele Beispiele in dieser Referenz benötigen einen XML-String. Anstatt diesen String in jedem Beispiel zu wiederholen, legen wir ihn in einer Datei ab, die 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&#211;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>
  <great-lines>
   <line>PHP solves all my web problems</line>
  </great-lines>
  <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';

$movies = new SimpleXMLElement($xmlstr);

echo 
$movies->movie[0]->plot;
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:


   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.

Um auf Elemente in einem XML-Dokument zuzugreifen, die Zeichen enthalten, die nicht dem PHP-Benennungsstandard entsprechen (z. B. der Bindestrich), können Sie den Elementnamen zwischen geschweifte Klammern und einfachen Anführungszeichen einschließen.

Beispiel #3 Auf <line> zugreifen

<?php
include 'example.php';

$movies = new SimpleXMLElement($xmlstr);

echo 
$movies->movie->{'great-lines'}->line;
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

PHP solves all my web problems

Beispiel #4 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';

$movies = new SimpleXMLElement($xmlstr);

/* Für jeden <character>-Knoten geben wir ein separates <name> aus. */
foreach ($movies->movie->characters->character as $character) {
   echo 
$character->name' played by '$character->actorPHP_EOL;
}

?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

Ms. Coder played by Onlivia Actora
Mr. Coder played by El ActÓr

Hinweis:

Eigenschaften ($movies->movie im vorherigen Beispiel) sind keine Arrays. Sie sind iterierbare und zugreifbare Objekte.

Beispiel #5 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 Arrays ansprechen.

<?php
include 'example.php';

$movies = new SimpleXMLElement($xmlstr);

/* Zugriff auf die <rating>-Knoten des ersten Films
 * Die Bewertungsskala wird zusätzlich ausgegeben. */
foreach ($movies->movie[0]->rating as $rating) {
    switch((string) 
$rating['type']) { // Verwende Attribute als Element-Indizes
    
case 'thumbs':
        echo 
$rating' Daumen hoch';
        break;
    case 
'stars':
        echo 
$rating' Sterne';
        break;
    }
}
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

7 Daumen hoch5 Sterne

Beispiel #6 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';

$movies = new SimpleXMLElement($xmlstr);

if ((string) 
$movies->movie->title == 'PHP: Behind the Parser') {
    print 
'Mein Lieblingsfilm.';
}

echo 
htmlentities((string) $movies->movie->title);
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

My favorite movie.PHP: Behind the Parser

Beispiel #7 Zwei Elemente vergleichen

Zwei SimpleXMLElements können auch dann als unterschiedlich betrachtet werden, wenn sie auf das gleiche Element zeigen.

<?php
include 'example.php';

$movies1 = new SimpleXMLElement($xmlstr);
$movies2 = new SimpleXMLElement($xmlstr);
var_dump($movies1 == $movies2);
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

bool(false)

Beispiel #8 XPath verwenden

SimpleXML verfügt über eine eingebaute XPath-Unterstützung. So finden Sie alle <character>-Elemente:

<?php
include 'example.php';

$movies = new SimpleXMLElement($xmlstr);

foreach (
$movies->xpath('//character') as $character) {
    echo 
$character->name' gespielt von '$character->actorPHP_EOL;
}
?>

'//' wird hier als Wildcard verwendet. Um absolute Pfadangaben zu verwenden, lassen Sie einen der Schrägstriche weg.

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

Ms. Coder gespielt von Onlivia Actora
Mr. Coder gespielt von El ActÓr

Beispiel #9 Werte setzen

Die Daten in SimpleXML müssen nicht konstant sein. Das Objekt erlaubt die Veränderung all seiner Elemente.

<?php
include 'example.php';
$movies = new SimpleXMLElement($xmlstr);

$movies->movie[0]->characters->character[0]->name 'Miss Coder';

echo 
$movies->asXML();
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

<?xml version="1.0" standalone="yes"?>
<movies>
 <movie>
  <title>PHP: Behind the Parser</title>
  <characters>
   <character>
    <name>Miss Coder</name>
    <actor>Onlivia Actora</actor>
   </character>
   <character>
    <name>Mr. Coder</name>
    <actor>El Act&#xD3;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>
  <great-lines>
   <line>PHP solves all my web problems</line>
  </great-lines>
  <rating type="thumbs">7</rating>
  <rating type="stars">5</rating>
 </movie>
</movies>

Beispiel #10 Elemente und Attribute hinzufügen

SimpleXML verfügt über eine vereinfachte Möglichkeit, Kindelemente und Attribute hinzuzufügen.

<?php
include 'example.php';
$movies = new SimpleXMLElement($xmlstr);

$character $movies->movie[0]->characters->addChild('character');
$character->addChild('name''Mr. Parser');
$character->addChild('actor''John Doe');

$rating $movies->movie[0]->addChild('rating''PG');
$rating->addAttribute('type''mpaa');

echo 
$movies->asXML();
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

<?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&#xD3;r</actor>
   </character>
  <character><name>Mr. Parser</name><actor>John Doe</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>
  <great-lines>
   <line>PHP solves all my web problems</line>
  </great-lines>
  <rating type="thumbs">7</rating>
  <rating type="stars">5</rating>
 <rating type="mpaa">PG</rating></movie>
</movies>

Beispiel #11 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;
}

$books simplexml_import_dom($dom);

echo 
$books->book[0]->title;
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

blah

Hier Kannst Du einen Kommentar verfassen


Bitte gib mindestens 10 Zeichen ein.
Wird geladen... Bitte warte.
* Pflichtangabe
Es sind noch keine Kommentare vorhanden.

Was genau bedeutet "Vibe Coding"? Ein tiefgehender Blick für Entwickler

In der Welt der Softwareentwicklung gibt es unzählige Wege, wie man an ein Projekt herangeht. Manche schwören auf strikte Planung, andere auf bewährte Algorithmen und wieder andere lassen sich von etwas ganz anderem leiten: ihrem Gefühl. ...

admin

Autor : admin
Kategorie: Software & Web-Development

PHP cURL-Tutorial: Verwendung von cURL zum Durchführen von HTTP-Anfragen

cURL ist eine leistungsstarke PHP-Erweiterung, die es Ihnen ermöglicht, mit verschiedenen Servern über verschiedene Protokolle wie HTTP, HTTPS, FTP und mehr zu kommunizieren. ...

TheMax

Autor : TheMax
Kategorie: PHP-Tutorials

Midjourney Tutorial - Anleitung für Anfänger

Über Midjourney, dem Tool zur Erstellung digitaler Bilder mithilfe von künstlicher Intelligenz, gibt es ein informatives Video mit dem Titel "Midjourney Tutorial auf Deutsch - Anleitung für Anfänger" ...

Mike94

Autor : Mike94
Kategorie: KI Tutorials

Tutorial veröffentlichen

Tutorial veröffentlichen

Teile Dein Wissen mit anderen Entwicklern weltweit

Du bist Profi in deinem Bereich und möchtest dein Wissen teilen, dann melde dich jetzt an und teile es mit unserer PHP-Community

mehr erfahren

Tutorial veröffentlichen

FPDF und eingebettete Links

Guten Abend, ich komme bei einem Problem nicht weiter, eventuell hat ja hier jemand einen Fingerzeig für mich. Folgende Situation: Ich erstelle ...

Geschrieben von Weindesigner am 04.02.2026 19:19:50
Forum: PHP Developer Forum
Große JSON-Dateien in PHP effizient streamen?

Don’t use json_decode() for GB-scale files. Use a streaming parser (SAX-style) like jsonstreamingparser, or redesign the JSON into newline-delim ...

Geschrieben von jackmarvia689 am 28.01.2026 10:41:56
Forum: PHP Developer Forum
Laufschrift mit Bildern

This is a test This is a test ...

Geschrieben von Kristy am 24.01.2026 17:54:44
Forum: HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS
Grid und Pos geht nicht ...

It seems like you need to adjust the grid areas for your sliders. For Slider 1, you should set it to occupy columns 2 to 5 and row 4. For Slider 2 ...

Geschrieben von marktuan am 22.01.2026 17:04:09
Forum: PHP Developer Forum