W3docs

simplexml_load_string()

SimpleXML ist eine PHP-Erweiterung mit einer einfachen API für die Arbeit mit XML-Dokumenten. simplexml_load_string() lädt XML aus einem String.

Einführung

SimpleXML ist eine PHP-Erweiterung, die eine einfache und benutzerfreundliche API für die Arbeit mit XML-Dokumenten bereitstellt. Die Funktion simplexml_load_string() ist eine der vielen Funktionen, die SimpleXML für die Arbeit mit XML-Dokumenten bietet. Sie ist ein leistungsstarkes Werkzeug, mit dem ein XML-Dokument aus einem String geladen und ein SimpleXMLElement-Objekt erstellt werden kann. In diesem Artikel wird die Funktion simplexml_load_string() ausführlich erläutert und gezeigt, wie sie in PHP verwendet werden kann.

Die Funktion simplexml_load_string() verstehen

Die Funktion simplexml_load_string() in PHP lädt ein XML-Dokument aus einem String und erstellt ein SimpleXMLElement-Objekt. (Hinweis: Dies ist der prozedurale Ansatz; das objektorientierte Äquivalent ist new SimpleXMLElement($string).) Die Syntax für die Verwendung der Funktion simplexml_load_string() lautet wie folgt:

Syntax

simplexml_load_string ( string $data [, string $class_name = "SimpleXMLElement" [, int $options = 0 [, string $ns = "" [, bool $is_prefix = false ]]]] ) : SimpleXMLElement

Hier ist $data der String, der das zu ladende XML-Dokument enthält. $class_name ist ein optionaler Parameter, der den Namen der Klasse angibt, die für das SimpleXMLElement-Objekt verwendet werden soll. $options ist ein optionaler Parameter, der zusätzliche Optionen für das Laden des XML-Dokuments festlegt. $ns ist ein optionaler Parameter, der den Namespace für das XML-Dokument angibt. $is_prefix ist ein optionaler Parameter, der angibt, ob der Namespace ein Präfix ist.

Beispielverwendung

Schauen wir uns ein Beispiel an, um die Verwendung der Funktion simplexml_load_string() in PHP zu verstehen:

Beispielverwendung der Funktion simplexml_load_string() in PHP

php— editable, runs on the server

Im obigen Beispiel erstellen wir zunächst einen String, der ein XML-Dokument enthält. Anschließend verwenden wir die Funktion simplexml_load_string(), um das XML-Dokument aus dem String zu laden und ein SimpleXMLElement-Objekt zu erstellen. Wir verwenden eine foreach-Schleife, um über jedes book-Element im XML-Dokument zu iterieren und den Titel jedes Buches auszugeben.

Wenn Ihr XML aus einer Datei oder einer URL stammt anstatt aus einem String, verwenden Sie stattdessen simplexml_load_file().

Attribute lesen

Auf XML-Attribute wird mit der Array-Syntax zugegriffen ($element['attrName']), während untergeordnete Elemente die Eigenschaftssyntax verwenden ($element->child). Dies ist die häufigste Fehlerquelle für Einsteiger:

<?php

$xmlString = '<books><book id="1"><title>PHP Basics</title></book></books>';
$xml = simplexml_load_string($xmlString);

foreach ($xml->book as $book) {
  echo "ID: " . $book['id'] . " - Title: " . $book->title . "\n";
}

Dies gibt ID: 1 - Title: PHP Basics aus. Beachten Sie, dass Attributwerte selbst SimpleXMLElement-Objekte sind. Casten Sie sie daher mit (string) oder (int), wenn Sie einen einfachen skalaren Wert benötigen.

Den options-Parameter verwenden

Der dritte Parameter akzeptiert libxml-Optionskonstanten, die die Verarbeitung des Dokuments beeinflussen. Eine häufig verwendete ist LIBXML_NOCDATA, die CDATA-Abschnitte in einfache Textknoten zusammenführt, sodass Sie diese wie gewöhnliche Inhalte lesen können:

<?php

$xmlString = '<note><body><![CDATA[Hello <b>world</b>]]></body></note>';
$xml = simplexml_load_string($xmlString, "SimpleXMLElement", LIBXML_NOCDATA);

echo (string) $xml->body . "\n";

Ohne LIBXML_NOCDATA wäre $xml->body beim Zugriff als String leer, da der Inhalt in einem CDATA-Knoten gespeichert ist.

Fehlerbehandlung

Standardmäßig gibt simplexml_load_string() Warnungen aus, wenn das XML fehlerhaft ist. Um Fehler kontrolliert zu behandeln, können Sie libxml_use_internal_errors() verwenden:

<?php

$xmlString = '<books><book><title>PHP Basics</title></books>'; // Missing closing </book> tag
libxml_use_internal_errors(true);
$xml = simplexml_load_string($xmlString);

if ($xml === false) {
  foreach (libxml_get_errors() as $error) {
    echo "Error: ", trim($error->message), "\n";
  }
} else {
  foreach($xml->book as $book) {
    echo $book->title . "\n";
  }
}

Wenn das XML ungültig ist, gibt simplexml_load_string() false zurück, anstatt eine Ausnahme auszulösen. Der Aufruf von libxml_use_internal_errors(true) unterdrückt die Standardwarnungen und ermöglicht es Ihnen, die gesammelten Fehler mit libxml_get_errors() zu überprüfen. Prüfen Sie immer auf false, bevor Sie das Ergebnis verwenden.

Fazit

simplexml_load_string() parst einen XML-String in ein SimpleXMLElement-Objekt und ermöglicht objektorientierten Zugriff auf untergeordnete Elemente ($xml->child) sowie Array-Zugriff auf Attribute ($xml['attr']). Verwenden Sie diese Funktion, wenn das XML bereits im Speicher vorliegt; nutzen Sie simplexml_load_file(), wenn es sich in einer Datei oder URL befindet. Aktivieren Sie für robustem Code interne libxml-Fehler und prüfen Sie den Rückgabewert, bevor Sie das Ergebnis verwenden. Für einen tieferen Einstieg in die SimpleXML-API lesen Sie die SimpleXML-Übersicht.

Übungen

Übung
Was macht die Funktion 'simplexml_load_string' in PHP laut https://www.w3docs.com/learn-php/simplexml-load-string.html?
Was macht die Funktion 'simplexml_load_string' in PHP laut https://www.w3docs.com/learn-php/simplexml-load-string.html?
Was this page helpful?