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

Comment convertir XML en tableau en php

PHPz
PHPzoriginal
2023-04-26 10:23:53755parcourir

XML est largement utilisé comme format de transmission de données courant dans de nombreuses applications Web. En tant que langage de développement Web courant, PHP doit naturellement être capable de traiter facilement les données XML. En PHP, la conversion de données XML en tableau est un besoin très courant. Cet article explique comment convertir des données XML en tableau à l'aide de PHP.

Tout d'abord, pour convertir des données XML en tableau, vous devez utiliser simplexml_load_string(), une fonction intégrée à PHP. Cette fonction charge une chaîne XML dans PHP et l'analyse, renvoyant une instance SimpleXMLElement. SimpleXMLElement est une classe PHP spécifiquement utilisée pour traiter les données XML. Elle contient de nombreuses méthodes utiles pour parcourir et manipuler les données XML.

Supposons que nous ayons les données XML suivantes :

<?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>

Nous pouvons utiliser la fonction simplexml_load_string() pour les charger dans PHP :

$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);

Maintenant, $xmlObj est une instance SimpleXMLElement, et nous pouvons utiliser ses méthodes pour parcourir et exploiter les données XML. . Cependant, si nous devons traiter davantage les données XML, comme filtrer et trier certains nœuds, il n'est pas pratique d'utiliser SimpleXMLElement. Par conséquent, nous devons le convertir en tableau.

Convertir SimpleXMLElement en tableau est très simple, il suffit d'ajouter un (tableau) cast devant l'objet :

$xmlArr = (array) $xmlObj;
print_r($xmlArr);

Le code ci-dessus affichera les résultats suivants :

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
                )
        )
)

Comme vous pouvez le voir, nous obtenons un résultat bidimensionnel Tableau, où chaque nœud est converti en un tableau associatif. S'il existe plusieurs nœuds portant le même nom dans les données XML, ils seront convertis en tableau. Par exemple, les deux livres ici sont convertis en un tableau de livres.

Il est à noter que dans le tableau converti, chaque nœud possède une clé nommée @attributes, qui correspond aux attributs du nœud. Par exemple, le nœud livre possède un attribut de catégorie et sa valeur est convertie en valeur de la clé @attributes['category'].

De plus, SimpleXMLElement étant une structure récursive, elle contient de nombreux nœuds enfants imbriqués. Par conséquent, le tableau converti est également une structure récursive, où chaque sous-tableau correspond à un nœud enfant.

Bien sûr, s'il existe des nœuds spéciaux dans les données XML qui nécessitent un traitement spécial, tels que des nœuds CDATA, des nœuds vides, etc., vous devez utiliser des méthodes spéciales pour les gérer. Mais pour les données XML ordinaires, l'utilisation de simplexml_load_string() et (array) cast est suffisamment pratique pour convertir les données XML en tableau.

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!

Déclaration:
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