Arbeiten mit XML in PHP: DOMDocument, SimpleXML und XPath

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

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');?>


4. XPath — flexible Suche im Dokument

Empfehlungen