Heim  >  Artikel  >  Backend-Entwicklung  >  So konvertieren Sie XML in ein Array in PHP

So konvertieren Sie XML in ein Array in PHP

PHPz
PHPzOriginal
2023-04-20 10:11:08486Durchsuche

PHP weist als Skriptsprache die Merkmale der objektorientierten Programmierung und der funktionalen Programmierung auf. PHP ist im Bereich der Webentwicklung weit verbreitet. Auch im Hinblick auf die XML-Datenverarbeitung bietet PHP viele nützliche Funktionen und Methoden. In diesem Artikel wird erläutert, wie Sie mit PHP einen XML-String in ein Array konvertieren.

Zuerst müssen wir die DOM-Erweiterung von PHP installieren. Die DOM-Erweiterung ist eine Erweiterung, die XML-Dokumente objektorientiert verarbeitet. Wir können ihre DOMDocument-Klasse verwenden, um XML zu verarbeiten. Informationen zum spezifischen Installationsprozess finden Sie in der offiziellen PHP-Dokumentation und werden hier nicht wiederholt.

Als nächstes müssen wir den XML-String in ein DOM-Objekt konvertieren. Hier stehen zwei Methoden zur Verfügung: Eine besteht darin, die XML-Zeichenfolge über die Methode „loadXML()“ in das DOM-Objekt zu laden, und die andere darin, die XML-Datei über die Methode „load()“ in das DOM-Objekt zu laden. Hier demonstrieren wir das Laden eines XML-Strings über die Methode „loadXML()“:

$xml_string = '<root><person><name>John</name><age>30</age></person><person><name>Mary</name><age>28</age></person></root>';
$dom = new DOMDocument();
$dom->loadXML($xml_string);

Auf diese Weise konvertieren wir den XML-String in ein DOM-Objekt. Als nächstes müssen wir das DOM-Objekt in ein Array konvertieren. Das DOM-Objekt verfügt über einige nützliche Funktionen und Methoden zur Verarbeitung von XML-Dokumenten. Die am häufigsten verwendeten sind die Methoden getElementsByTagName() und getAttribute(). Da die Datenstruktur von XML eine Baumstruktur ist, können diese Methoden uns beim Durchlaufen des XML-Dokuments helfen.

Wir können das DOM-Objekt über eine rekursive Funktion in ein Array konvertieren:

function dom2array($node) {
    $array = array();
    if($node->hasAttributes()) {
        foreach($node->attributes as $attr) {
            $array[$attr->nodeName] = $attr->nodeValue;
        }
    }
    if($node->hasChildNodes()) {
        foreach($node->childNodes as $child) {
            if($child->nodeType == XML_TEXT_NODE) {
                $array['_value'] = $child->nodeValue;
                continue;
            }

            $name = $child->nodeName;
            if(!isset($array[$name])) {
                $array[$name] = dom2array($child);
            } else {
                if(!is_array($array[$name])) {
                    $array[$name] = array($array[$name]);
                }
                $array[$name][] = dom2array($child);
            }
        }
    }
    return $array;
}

$xml_array = dom2array($dom->documentElement);
print_r($xml_array);

Diese Funktion durchläuft rekursiv alle Knoten und verwendet den Knotennamen als Schlüssel des Arrays. Wenn Knoten mit demselben Namen in Arrays gespeichert werden. Durch den obigen Code erhalten wir die folgende Ausgabe:

Array
(
    [person] => Array
        (
            [0] => Array
                (
                    [name] => John
                    [age] => 30
                )
            [1] => Array
                (
                    [name] => Mary
                    [age] => 28
                )
        )
)

Wie Sie sehen können, haben wir den XML-String erfolgreich in ein Array konvertiert. Auf diese Weise können wir XML-Daten bequem verarbeiten und mit PHP XML-Daten während der Entwicklung effizienter verarbeiten.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn