Arbeiten mit XML in PHP: Vom einfachen Parsen bis zur Erstellung komplexer Dokumente
XML (eXtensible Markup Language) bleibt eines der wichtigsten Formate für Datenaustausch, Konfigurationsdateien und Webdienste (SOAP, RSS/Atom). PHP bietet mehrere leistungsstarke integrierte Erweiterungen für die Arbeit mit XML, mit denen sich nahezu jede Aufgabe lösen lässt – vom Parsen einfacher RSS-Feeds bis zur Generierung komplexer Dokumente mit Namespaces. In diesem Artikel behandeln wir die wichtigsten Werkzeuge: SimpleXML, DOMDocument und XMLReader, und lernen, wie man XML-Dokumente dynamisch erstellt.
1. SimpleXML – Schnelles und bequemes Parsen
SimpleXML ist die einfachste Erweiterung für die Arbeit mit XML. Sie wandelt ein XML-Dokument in ein Objekt um, dessen Eigenschaften wie normale Arrays und Objekte gelesen werden können. Ideal für kleine und mittlere Dokumente, wenn keine komplexe Navigation erforderlich ist.
XML aus einem String oder einer Datei laden
<?php// Aus einem String$xmlString = '<book><title>PHP für Anfänger</title><author>Ivan Petrov</author></book>';$book = simplexml_load_string($xmlString);
// Aus einer Datei$books = simplexml_load_file('books.xml');
echo $book->title; // PHP für Anfängerecho $book->author; // Ivan Petrov?>Arbeiten mit Attributen und mehreren Elementen
<?php$xml = '<library> <book id="1"> <title>PHP Objects</title> <author>Matt Zandstra</author> </book> <book id="2"> <title>Clean Code</title> <author>Robert C. Martin</author> </book></library>';
$library = simplexml_load_string($xml);
foreach ($library->book as $book) { echo 'ID: ' . $book['id'] . ' — ' . $book->title . ' (' . $book->author . ')<br>';}// ID: 1 — PHP Objects (Matt Zandstra)// ID: 2 — Clean Code (Robert C. Martin)?>Wichtig: SimpleXML unterstützt keine komplexen XPath-Abfragen mit Bedingungen (nur einfache Pfade). Für leistungsfähigere Abfragen verwenden Sie DOMDocument oder XPath.
2. DOMDocument – Vollständige Kontrolle über XML
DOMDocument implementiert die W3C DOM API und bietet vollständige Kontrolle über die Dokumentstruktur. Sie können beliebige Knoten hinzufügen, löschen, ändern, mit Namespaces arbeiten und XPath-Abfragen jeder Komplexität ausführen. Dies ist die Wahl für professionelle Aufgaben.
Parsen und Navigation mit DOMDocument
<?php$dom = new DOMDocument();$dom->load('books.xml');
// Alle <book>-Elemente abrufen$books = $dom->getElementsByTagName('book');
foreach ($books as $book) { $title = $book->getElementsByTagName('title')->item(0)->nodeValue; $author = $book->getElementsByTagName('author')->item(0)->nodeValue; echo "Buch: $title, Autor: $author<br>";}?>XPath – Leistungsstarke Abfragen für XML
<?php$dom = new DOMDocument();$dom->load('library.xml');$xpath = new DOMXPath($dom);
// Alle Bücher mit Preis > 500 finden$expensiveBooks = $xpath->query('//book[price > 500]');
foreach ($expensiveBooks as $book) { echo $book->getElementsByTagName('title')->item(0)->nodeValue . ' — ' . $book->getElementsByTagName('price')->item(0)->nodeValue . ' Rubel<br>';}?>3. Erstellung von XML-Dokumenten
PHP ermöglicht nicht nur das Lesen, sondern auch das Erstellen von XML-Dokumenten. Betrachten wir beide Ansätze.
XML mit SimpleXML erstellen
<?php$xml = new SimpleXMLElement('<catalog></catalog>');
$product = $xml->addChild('product');$product->addChild('name', 'Laptop');$product->addChild('price', 75000);$product->addAttribute('id', '12 Auch in der Bibliothek
SFML für C++: vollständiger Leitfaden mit Beispielen
Überwachung von Swift-Apps: Bibliotheken und Tools für iOS/macOS
Integration von Prometheus-Metriken in Java-Anwendungen: Bibliothek simpleclient
Redis-Clients für Kotlin: Lettuce, Redisson und Kredis
ASP.NET Core für C# (.NET): Vollständiger Leitfaden mit Beispielen