Maison > développement back-end > Problème PHP > Comment convertir XML en tableau en php

Comment convertir XML en tableau en php

PHPz
Libérer: 2023-04-20 13:36:09
original
551 Les gens l'ont consulté

PHP, en tant que langage de script, présente les caractéristiques de la programmation orientée objet et de la programmation fonctionnelle. PHP est largement utilisé dans le domaine du développement web. En termes de traitement de données XML, PHP fournit également de nombreuses fonctions et méthodes utiles. Cet article explique comment utiliser PHP pour convertir une chaîne XML en tableau.

Tout d'abord, nous devons installer l'extension DOM pour PHP. L'extension DOM est une extension qui traite les documents XML de manière orientée objet. Nous pouvons utiliser sa classe DOMDocument pour traiter le XML. Pour le processus d'installation spécifique, veuillez vous référer à la documentation officielle de PHP et ne sera pas répété ici.

Ensuite, nous devons convertir la chaîne XML en un objet DOM. Deux méthodes sont proposées ici : l'une consiste à charger la chaîne XML dans l'objet DOM via la méthode loadXML() et l'autre consiste à charger le fichier XML dans l'objet DOM via la méthode load(). Nous démontrons ici le chargement d'une chaîne XML via la méthode 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);
Copier après la connexion

De cette façon, nous convertissons la chaîne XML en un objet DOM. Ensuite, nous devons convertir l'objet DOM en un tableau. L'objet DOM possède des fonctions et méthodes utiles pour le traitement des documents XML, dont les plus couramment utilisées sont les méthodes getElementsByTagName() et getAttribute(). Étant donné que la structure des données XML est une structure arborescente, ces méthodes peuvent nous aider à parcourir le document XML.

Nous pouvons convertir l'objet DOM en tableau grâce à une fonction récursive :

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);
Copier après la connexion

Cette fonction traversera récursivement tous les nœuds, en utilisant le nom du nœud comme clé du tableau, et s'il y a un nœud avec le même nom, il sera stocké dans un tableau. Grâce au code ci-dessus, nous obtenons le résultat suivant :

Array
(
    [person] => Array
        (
            [0] => Array
                (
                    [name] => John
                    [age] => 30
                )
            [1] => Array
                (
                    [name] => Mary
                    [age] => 28
                )
        )
)
Copier après la connexion

Comme vous pouvez le voir, nous avons réussi à convertir la chaîne XML en tableau. De cette façon, nous pouvons facilement traiter les données XML, et nous pouvons également utiliser PHP pour traiter les données XML plus efficacement pendant le développement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal