XML wird in vielen Webanwendungen häufig als gängiges Datenübertragungsformat verwendet. Als gängige Webentwicklungssprache muss PHP selbstverständlich in der Lage sein, XML-Daten einfach zu verarbeiten. In PHP ist die Konvertierung von XML-Daten in ein Array ein sehr häufiger Bedarf. In diesem Artikel wird erläutert, wie Sie XML-Daten mit PHP in ein Array konvertieren.
Um XML-Daten in ein Array zu konvertieren, müssen Sie zunächst simplexml_load_string() verwenden, eine integrierte Funktion in PHP. Diese Funktion lädt einen XML-String in PHP, analysiert ihn und gibt eine SimpleXMLElement-Instanz zurück. SimpleXMLElement ist eine Klasse in PHP, die speziell zur Verarbeitung von XML-Daten verwendet wird. Sie enthält viele nützliche Methoden zum Durchlaufen und Bearbeiten von XML-Daten.
Angenommen, wir haben die folgenden XML-Daten:
<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book category="children"> <title lang="en">Harry Potter</title> <author>J.K. Rowling</author> <price>29.99</price> </book> <book category="fiction"> <title lang="en">The Hunger Games</title> <author>Suzanne Collins</author> <price>22.99</price> </book> </bookstore>
Wir können die Funktion simplexml_load_string() verwenden, um sie in PHP zu laden:
$xml = '<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book category="children"> <title lang="en">Harry Potter</title> <author>J.K. Rowling</author> <price>29.99</price> </book> <book category="fiction"> <title lang="en">The Hunger Games</title> <author>Suzanne Collins</author> <price>22.99</price> </book> </bookstore>'; $xmlObj = simplexml_load_string($xml);
Jetzt ist $xmlObj eine SimpleXMLElement-Instanz und wir können ihre Methoden zum Durchlaufen und Bearbeiten von XML-Daten verwenden . Wenn wir jedoch die XML-Daten weiter verarbeiten müssen, z. B. bestimmte Knoten filtern und sortieren, ist die Verwendung von SimpleXMLElement nicht praktisch. Daher müssen wir es in ein Array konvertieren.
Das Konvertieren von SimpleXMLElement in ein Array ist sehr einfach. Fügen Sie einfach einen (Array-)Cast vor dem Objekt hinzu:
$xmlArr = (array) $xmlObj; print_r($xmlArr);
Der obige Code gibt die folgenden Ergebnisse aus:
Array ( [book] => Array ( [0] => Array ( [@attributes] => Array ( [category] => children ) [title] => Array ( [@attributes] => Array ( [lang] => en ) [0] => Harry Potter ) [author] => J.K. Rowling [price] => 29.99 ) [1] => Array ( [@attributes] => Array ( [category] => fiction ) [title] => Array ( [@attributes] => Array ( [lang] => en ) [0] => The Hunger Games ) [author] => Suzanne Collins [price] => 22.99 ) ) )
Wie Sie sehen können, erhalten wir ein zweidimensionales Ergebnis Array, wobei jeder Knoten in ein assoziatives Array konvertiert wird. Wenn in den XML-Daten mehrere Knoten mit demselben Namen vorhanden sind, werden diese in ein Array umgewandelt. Beispielsweise werden die beiden Bücher hier in ein Bucharray umgewandelt.
Es ist zu beachten, dass im konvertierten Array jeder Knoten einen Schlüssel namens @attributes hat, der den Attributen des Knotens entspricht. Beispielsweise verfügt der Buchknoten über ein Kategorieattribut und sein Wert wird in den Wert des Schlüssels @attributes['category'] konvertiert.
Da SimpleXMLElement außerdem eine rekursive Struktur ist, enthält es viele verschachtelte untergeordnete Knoten. Daher ist das konvertierte Array auch eine rekursive Struktur, bei der jedes Unterarray einem untergeordneten Knoten entspricht.
Wenn es in den XML-Daten spezielle Knoten gibt, die eine spezielle Verarbeitung erfordern, wie z. B. CDATA-Knoten, leere Knoten usw., müssen Sie natürlich einige spezielle Methoden verwenden, um diese zu verarbeiten. Aber für gewöhnliche XML-Daten ist die Verwendung von simplexml_load_string() und (array)cast praktisch genug, um XML-Daten in ein Array zu konvertieren.
Das obige ist der detaillierte Inhalt vonSo konvertieren Sie XML in ein Array in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!