Arbeiten mit XML in PHP: DOMDocument, SimpleXML und XPath
XML (eXtensible Markup Language) bleibt eines der wichtigsten Formate für den Datenaustausch, die Speicherung von Konfigurationen und die Integration mit externen Diensten (RSS-Feeds, SOAP, API). PHP bietet mehrere leistungsstarke integrierte Erweiterungen für die Arbeit mit XML. In diesem Artikel werden wir drei grundlegende Ansätze behandeln: DOMDocument (Dokumentobjektmodell), SimpleXML (einfach und intuitiv) und XPath (Abfragesprache für die Navigation).
1. Vorbereitung: Beispiel eines XML-Dokuments
Für alle Beispiele verwenden wir dieselbe XML-Datei catalog.xml:
<?xml version="1.0" encoding="UTF-8"?><catalog> <book id="1"> <title>PHP für Anfänger</title> <author>Ivan Petrov</author> <price currency="RUB">1200</price> </book> <book id="2"> <title>XML im Detail</title> <author>Maria Sidorova</author> <price currency="RUB">950</price> </book></catalog>2. DOMDocument — volle Kontrolle über XML
Die Erweiterung DOMDocument implementiert W3C DOM Level 2. Sie bietet maximale Kontrolle: Knoten, Attribute und Textinhalte können erstellt, gelöscht und geändert werden. Geeignet für komplexe Szenarien, die eine präzise Strukturverwaltung erfordern.
XML laden und lesen
<?php$dom = new DOMDocument();$dom->load('catalog.xml'); // oder loadXML($xmlString)
$books = $dom->getElementsByTagName('book');foreach ($books as $book) { $id = $book->getAttribute('id'); $title = $book->getElementsByTagName('title')->item(0)->nodeValue; $author = $book->getElementsByTagName('author')->item(0)->nodeValue; $price = $book->getElementsByTagName('price')->item(0)->nodeValue; echo "Buch #$id: $title — $author, $price RUB.";}?>Neues XML erstellen
<?php$dom = new DOMDocument('1.0', 'UTF-8');$root = $dom->createElement('catalog');$dom->appendChild($root);
$book = $dom->createElement('book');$book->setAttribute('id', '3');$title = $dom->createElement('title', 'PHP und XML');$book->appendChild($title);$root->appendChild($book);
echo $dom->saveXML(); // gibt XML-String aus// $dom->save('new_catalog.xml');?>3. SimpleXML — Einfachheit und Komfort
SimpleXML ist eine leichtere Erweiterung, die XML in ein Objekt mit Zugriff auf Elemente über Eigenschaften umwandelt. Ideal für schnelles Lesen, besonders wenn die XML-Struktur bekannt ist und keine Feineinstellungen erfordert.
XML mit SimpleXML lesen
<?php$xml = simplexml_load_file('catalog.xml'); // oder simplexml_load_string($xmlString)
foreach ($xml->book as $book) { $id = (string)$book['id']; $title = (string)$book->title; $author = (string)$book->author; $price = (string)$book->price; echo "Buch #$id: $title — $author, $price RUB.";}?>XML mit SimpleXML erstellen
<?php$xml = new SimpleXMLElement('<catalog></catalog>');$book = $xml->addChild('book');$book->addAttribute('id', '4');$book->addChild('title', 'SimpleXML Guide');$book->addChild('price', 800)->addAttribute('currency', 'RUB');
echo $xml->asXML();// $xml->asXML('output.xml');?>Daten ändern
<?php$xml = simplexml_load_file('catalog.xml');$xml->book[0]->price = 1300; // Preis des ersten Buches ändern$xml->asXML('catalog_updated.xml');?>