Zum Hauptinhalt springen

Wie man XML mit PHP schön ausgibt: Die besten Möglichkeiten und Werkzeuge

Mit dieser Funktion können Sie eine XML-Datei herunterladen und in ein arbeitsfreundliches Objekt konvertieren. Nachdem Sie die Datei heruntergeladen haben, können Sie mit Objektzugriff auf ihre Elemente und Attribute zugreifen. Im Folgenden finden Sie ein Beispiel für die Verwendung dieser Funktion:

name;echo $xml->age;?>

Methode 2: Verwenden der Funktion DOMDocument()

Diese Funktion bietet viele Möglichkeiten, mit XML-Dokumenten zu arbeiten. Es ermöglicht Ihnen, XML zu analysieren und dessen Inhalt zu verarbeiten. Mit Funktionen createElement() und appendChild() sie können neue Elemente erstellen und sie dem Dokument hinzufügen. Im Folgenden finden Sie ein Beispiel für die Verwendung dieser Funktion:

load('data.xml');$names = $xml->getElementsByTagName('name');$ages = $xml->getElementsByTagName('age');foreach ($names as $name) nodeValue;>foreach ($ages as $age) nodeValue;>?>

Methode 3: Verwenden der Funktion xml_writer_open_uri()

Mit dieser Funktion können Sie ein XML-Dokument erstellen, indem Sie dessen Inhalt in einen Stream oder eine Datei schreiben. Mit Funktionen xmlwriter_start_element() und xmlwriter_end_element() sie können neue Elemente erstellen und ihnen Attribute und Inhalte hinzufügen. Im Folgenden finden Sie ein Beispiel für die Verwendung dieser Funktion:

  • SimpleXML: Es ist ein integriertes PHP-Modul, das es einfach und bequem macht, mit XML zu arbeiten. Es ermöglicht Ihnen, XML-Dokumente in eine Objektstruktur zu analysieren und XML-Elemente mit einer einfachen Syntax zu manipulieren.
  • DOM: Dieses PHP-Modul bietet eine Schnittstelle zum Arbeiten mit XML-Dokumenten als DOM-Baum (Document Object Model). Sie können damit XML-Elemente und -Attribute erstellen, ändern und löschen.
  • XSLT: PHP unterstützt auch XSLT (Extensible Stylesheet Language Transformations), mit dem Sie XML mithilfe von XSL-Vorlagen konvertieren können. Dies kann nützlich sein, um XML in ein lesbareres Format umzuwandeln.

Wenn Sie mit XML in PHP arbeiten, können Sie auch eine Kombination dieser Tools verwenden, um die besten Ergebnisse zu erzielen. Sie können beispielsweise zuerst ein XML-Dokument mit SimpleXML analysieren und dann eine XSLT-Transformation mithilfe des DOM anwenden.

$xml = simplexml_load_file('file.xml');function formatXML($xml, $indent = 0) children() as $child) getName() . ": ";echo htmlentities((string) $child);echo ""; // новая строкаformatXML($child, $indent + 1); // рекурсивный вызов>>formatXML($xml);

Um mit SimpleXML zu beginnen, müssen Sie ein XML-Dokument herunterladen. Dies kann mit der Funktion simplexml_load_file erfolgen. Zum Beispiel:

$xml = simplexml_load_file("file.xml");

Nachdem Sie das XML in ein SimpleXML-Objekt geladen haben, können Sie mithilfe der Objektsyntax auf seine Elemente und Attribute zugreifen. Zum Beispiel:

$name = $xml->name;$age = $xml->age;

Wenn das XML mehrere Elemente mit demselben Namen enthält, können Sie über ein Array auf sie zugreifen. Wenn das XML beispielsweise mehrere Elemente enthält:

foreach ($xml->book as $book) title;$author = $book->author;// дальнейшая обработка данных>

Mit SimpleXML können Sie auch neue XML-Dokumente erstellen oder einem vorhandenen Dokument neue Elemente hinzufügen. Um beispielsweise ein neues Element zu erstellen:

$xml->addChild("email", "[email protected]");

Wenn Sie mit der Arbeit mit XML fertig sind, können Sie den Inhalt mit der Funktion asXML() ausgeben. Zum Beispiel:

echo $xml->asXML();

Erstellen Sie zunächst eine neue Instanz der DOMDocument-Klasse:

$doc = new DOMDocument('1.0', 'UTF-8');

Die Parameter '1.0' und 'UTF-8' geben die XML-Version bzw. die Codierung an.

Anschließend können Sie die vorhandene XML-Datei mit der load() -Methode laden :

$doc->load('file.xml');

Wenn Sie ein neues XML-Dokument von Grund auf neu erstellen möchten, können Sie die Methoden createElement() und appendChild() der DOMDocument-Klasse verwenden, um dem Dokument Elemente hinzuzufügen. Zum Beispiel:

$root = $doc->createElement('root');$child = $doc->createElement('child', 'Text');$root->appendChild($child);$doc->appendChild($root);

Bevor Sie XML in einem schönen Format ausgeben können, müssen Sie die entsprechenden Einstellungen mithilfe der formatOutput-Methode festlegen. Zum Beispiel:

$doc->formatOutput = true;
header('Content-type: text/xml');echo $doc->saveXML();

Um XSLT in PHP zu verwenden, müssen Sie die folgenden Schritte ausführen:

  1. Erstellen einer XSL-Datei mit einer Beschreibung von Stilen und Transformationen
  2. XML-Quelldokument mit Daten laden
  3. Erstellen eines XSLTProcessor-Objekts
  4. Laden Sie die XSL-Datei in ein XSLTProcessor-Objekt
  5. Konvertierung auf ein XML-Dokument anwenden
  6. Ausgabe des Ergebnisses

simplexml_load_string() lädt das XML in ein SimpleXMLElement-Objekt und ruft dann die asXML() -Methode auf, um das formatierte XML abzurufen.

2. Falsche Zeichen

3. Falsche Verarbeitung von Leerzeichen und Einrückungen

Beim Lesen von XML in PHP können kleine Leerzeichen und Einrückungen übersprungen werden, was zu einer falschen Interpretation der XML-Struktur führen kann.

Die Entscheidung: Sie können die Option LIBXML_NOBLANKS beim Laden von XML verwenden, um alle Leerzeichen und Einrückungen beizubehalten, wie im folgenden Beispiel gezeigt:

simplexml_load_file('file.xml', 'SimpleXMLElement', LIBXML_NOBLANKS);

4. XML-Validierungsfehler

XML kann komplexe Strukturen und eine Reihe von Regeln enthalten, die eingehalten werden müssen, damit XML korrekt analysiert und verarbeitet werden kann. Bei Validierungsfehlern kann PHP eine Ausnahme auslösen oder ein leeres Ergebnis zurückgeben.

libxml_use_internal_errors(true);
$xml = simplexml_load_file('file.xml');
$errors = libxml_get_errors();
foreach ($errors as $error) echo $error->message;
>
libxml_use_internal_errors(false);

  • Verwenden Sie einen XmlWriter: Die XmlWriter-Klasse in PHP bietet praktische Methoden zum Generieren von XML-Dokumenten. Es ermöglicht Ihnen, verschiedene Elemente eines Dokuments konsistent zu schreiben, wodurch der Code verständlicher und effizienter wird.