Arbeiten mit XML in PHP: Vollständiger Leitfaden für Entwickler
XML (eXtensible Markup Language) bleibt eines der wichtigsten Formate für den Datenaustausch, die Anwendungskonfiguration und die Integration mit externen Diensten. PHP bietet mehrere leistungsstarke Werkzeuge für die Arbeit mit XML, die jeweils für verschiedene Szenarien geeignet sind. In diesem Artikel werden wir die wichtigsten Bibliotheken und Ansätze, die in der modernen PHP-Entwicklung verwendet werden, im Detail besprechen.
Wichtige PHP-Werkzeuge für die Arbeit mit XML
In PHP gibt es drei Haupterweiterungen für die Arbeit mit XML, die jeweils ihre eigenen Besonderheiten und Anwendungsbereiche haben:
- SimpleXML — ein einfacher und intuitiver Parser zum Lesen von XML. Ideal für kleine Dateien und schnelle Verarbeitung.
- DOMDocument — eine vollständige Implementierung des W3C DOM für die Arbeit mit XML-Dokumenten. Unterstützt Lesen, Schreiben, Ändern und Validieren.
- XMLReader / XMLWriter — Streaming-Parser für die Arbeit mit großen XML-Dateien (Hunderte von Megabyte und Gigabyte).
1. SimpleXML — Schnellstart
SimpleXML ermöglicht es, einen XML-String oder eine Datei in ein Objekt umzuwandeln, mit dem man wie mit einem normalen Array oder Objekt arbeiten kann. Dies ist die beliebteste Wahl für einfache Aufgaben.
<?php// XML aus einem String lesen$xmlString = '<books> <book id="1"> <title>PHP für Anfänger</title> <author>Ivan Petrov</author> <price currency="RUB">1500</price> </book> <book id="2"> <title>XML im Detail</title> <author>Anna Smirnova</author> <price currency="RUB">2000</price> </book></books>';
$xml = simplexml_load_string($xmlString);
// Zugriff auf Datenforeach ($xml->book as $book) { echo "ID: " . $book['id'] . ""; echo "Titel: " . $book->title . ""; echo "Autor: " . $book->author . ""; echo "Preis: " . $book->price . " " . $book->price['currency'] . "
";}
// Neues XML erstellen$newXml = new SimpleXMLElement('<catalog/>');$product = $newXml->addChild('product');$product->addAttribute('sku', 'P001');$product->addChild('name', 'Laptop');$product->addChild('price', 55000);
echo $newXml->asXML();?>2. DOMDocument — vollständige Kontrolle
DOMDocument bietet vollständigen Zugriff auf das Document Object Model. Sie können beliebige Knoten erstellen, ändern und löschen sowie XPath-Abfragen zur Datensuche durchführen.
<?php$dom = new DOMDocument('1.0', 'UTF-8');$dom->formatOutput = true;
// Wurzelelement erstellen$root = $dom->createElement('employees');$dom->appendChild($root);
// Mitarbeiter hinzufügen$employee = $dom->createElement('employee');$employee->setAttribute('id', '101');
$name = $dom->createElement('name', 'Alexey Kuznetsov');$employee->appendChild($name);
$position = $dom->createElement('position', 'Entwickler');$employee->appendChild($position);
$root->appendChild($employee);
// XPath-Abfrage$xpath = new DOMXPath($dom);$query = "//employee[@id='101']/name";$result = $xpath->query($query);
if ($result->length > 0) { echo "Gefunden: " . $result->item(0)->nodeValue;}
// In Datei speichern$dom->save('employees.xml');?>3. XMLReader und XMLWriter — für große Datenmengen
Wenn XML-Dateien zu groß werden, um in den Speicher geladen zu werden (mehr als 10-50 MB), helfen Streaming-Parser. XMLReader liest das Dokument Knoten für Knoten, während XMLWriter XML in Teilen erstellt.
<?php// Große XML-Datei lesen$reader = new XMLReader();$reader->open('large_data.xml');
while ($reader->read( Auch in der Bibliothek
Überwachung von TypeScript-Anwendungen: Bibliotheken, Tools und Konfiguration
Caching in TypeScript: Redis und andere Lösungen für Node.js
Symfony/EventDispatcher für PHP: Komplette Anleitung mit Beispielen
Swagger/OpenAPI-Generierung für Java: Bibliotheken und Werkzeuge
Event Bus und das Observer-Muster in Go (Golang): Implementierung und Beispiele