Comment convertir XML en tableau en PHP

PHPz
Libérer: 2023-04-20 15:47:26
original
1406 Les gens l'ont consulté

Dans le développement Web, XML est largement utilisé comme format de transmission et de stockage de données. Lorsque nous devons utiliser des données au format XML, nous devons généralement convertir la chaîne XML en un tableau ou un objet pour faciliter les opérations ultérieures. En PHP, vous pouvez facilement convertir des chaînes XML en tableaux. Cet article présentera comment PHP convertit XML en tableau.

1. Introduction au format XML

XML est un langage de balisage, principalement utilisé pour la transmission et le stockage de données. XML contient des éléments et des attributs. L'élément est généralement représenté par une balise, telle que :

<book>
  <title>PHP从入门到精通</title>
  <price>50</price>
</book>
Copier après la connexion

Ce texte XML définit un élément livre, qui contient des sous-éléments titre et prix.

Attribut est un moyen d'ajouter des informations supplémentaires à un élément, telles que :

<book category="Programming">
  <title>PHP从入门到精通</title>
  <price>50</price>
</book>
Copier après la connexion

Dans cet exemple, nous définissons l'attribut catégorie pour l'élément livre avec la valeur "Programmation".

2. Convertir XML en tableau en PHP

PHP fournit de nombreuses fonctions pour traiter XML, parmi lesquelles les fonctions les plus couramment utilisées sont simplexml_load_string() et xml_parse_into_struct(). Ci-dessous, nous présentons respectivement l'utilisation de ces deux fonctions. La fonction

  1. simplexml_load_string()

simplexml_load_string() peut créer un objet SimpleXMLElement à partir d'une chaîne XML. Grâce à cet objet, vous pouvez facilement accéder aux éléments et aux attributs en XML, et vous pouvez également convertir l'objet SimpleXMLElement en tableau ou autre. types de données. Voici un exemple d'utilisation de la fonction simplexml_load_string() pour convertir XML en tableau :

$xml = '<bookstore>
            <book category="Programming">
                <title>PHP从入门到精通</title>
                <author>张三</author>
                <price>50</price>
            </book>
            <book category="Web Development">
                <title>JavaScript高级编程</title>
                <author>李四</author>
                <price>45</price>
            </book>
        </bookstore>';
        
$data = json_decode(json_encode(simplexml_load_string($xml)), true);
print_r($data);
Copier après la connexion

Exécutez le code ci-dessus et le résultat est le suivant :

Array
(
    [book] => Array
        (
            [0] => Array
                (
                    [@attributes] => Array
                        (
                            [category] => Programming
                        )
                    [title] => PHP从入门到精通
                    [author] => 张三
                    [price] => 50
                )
            [1] => Array
                (
                    [@attributes] => Array
                        (
                            [category] => Web Development
                        )
                    [title] => JavaScript高级编程
                    [author] => 李四
                    [price] => 45
                )
        )
)
Copier après la connexion

Comme vous pouvez le voir, la fonction simplexml_load_string() convertit XML en un relation composée de plusieurs tableaux. La fonction

  1. xml_parse_into_struct()

xml_parse_into_struct() analyse une chaîne XML dans un tableau. Voici un exemple d'utilisation de la fonction xml_parse_into_struct() pour convertir XML en tableau :

$xml = '<bookstore>
            <book category="Programming">
                <title>PHP从入门到精通</title>
                <author>张三</author>
                <price>50</price>
            </book>
            <book category="Web Development">
                <title>JavaScript高级编程</title>
                <author>李四</author>
                <price>45</price>
            </book>
        </bookstore>';

$p = xml_parser_create();
xml_parse_into_struct($p, $xml, $vals);
xml_parser_free($p);

print_r($vals);
Copier après la connexion

Exécutez le code ci-dessus et le résultat est le suivant :

Array
(
    [0] => Array
        (
            [tag] => BOOKSTORE
            [type] => open
            [level] => 1
        )

    [1] => Array
        (
            [tag] => BOOK
            [type] => open
            [level] => 2
            [attributes] => Array
                (
                    [CATEGORY] => Programming
                )
        )

    [2] => Array
        (
            [tag] => TITLE
            [type] => open
            [level] => 3
        )

    [3] => Array
        (
            [tag] => TITLE
            [type] => close
            [level] => 3
            [value] => PHP从入门到精通
        )

    [4] => Array
        (
            [tag] => AUTHOR
            [type] => open
            [level] => 3
        )

    [5] => Array
        (
            [tag] => AUTHOR
            [type] => close
            [level] => 3
            [value] => 张三
        )

    [6] => Array
        (
            [tag] => PRICE
            [type] => open
            [level] => 3
        )

    [7] => Array
        (
            [tag] => PRICE
            [type] => close
            [level] => 3
            [value] => 50
        )

    [8] => Array
        (
            [tag] => BOOK
            [type] => close
            [level] => 2
        )

    [9] => Array
        (
            [tag] => BOOK
            [type] => open
            [level] => 2
            [attributes] => Array
                (
                    [CATEGORY] => Web Development
                )
        )

    [10] => Array
        (
            [tag] => TITLE
            [type] => open
            [level] => 3
        )

    [11] => Array
        (
            [tag] => TITLE
            [type] => close
            [level] => 3
            [value] => JavaScript高级编程
        )

    [12] => Array
        (
            [tag] => AUTHOR
            [type] => open
            [level] => 3
        )

    [13] => Array
        (
            [tag] => AUTHOR
            [type] => close
            [level] => 3
            [value] => 李四
        )

    [14] => Array
        (
            [tag] => PRICE
            [type] => open
            [level] => 3
        )

    [15] => Array
        (
            [tag] => PRICE
            [type] => close
            [level] => 3
            [value] => 45
        )

    [16] => Array
        (
            [tag] => BOOK
            [type] => close
            [level] => 2
        )

    [17] => Array
        (
            [tag] => BOOKSTORE
            [type] => close
            [level] => 1
        )
)
Copier après la connexion

Comme vous pouvez le voir, la fonction xml_parse_into_struct() analyse XML en un tableau composé de plusieurs tableaux Tableaux relationnels, où chaque tableau représente un élément ou un attribut en XML.

3. Utilisez l'extension DOMDocument pour la conversion

En PHP, il existe également une méthode pour utiliser l'extension DOMDocument pour analyser XML. DOMDocument est une extension intégrée de PHP et est très puissante. Voici un exemple d'utilisation de DOMDocument pour convertir des données XML :

$xml = '<bookstore>
            <book category="Programming">
                <title>PHP从入门到精通</title>
                <author>张三</author>
                <price>50</price>
            </book>
            <book category="Web Development">
                <title>JavaScript高级编程</title>
                <author>李四</author>
                <price>45</price>
            </book>
        </bookstore>';

$dom = new DOMDocument;
$dom->loadXML($xml);
$data = array();
foreach ($dom->getElementsByTagName('book') as $book) {
    $data[] = array(
        'category' => $book->getAttribute('category'),
        'title' => $book->getElementsByTagName('title')->item(0)->textContent,
        'author' => $book->getElementsByTagName('author')->item(0)->textContent,
        'price' => $book->getElementsByTagName('price')->item(0)->textContent,
    );
}
print_r($data);
Copier après la connexion

Exécutez le code ci-dessus, le résultat de sortie est le suivant :

Array
(
    [0] => Array
        (
            [category] => Programming
            [title] => PHP从入门到精通
            [author] => 张三
            [price] => 50
        )

    [1] => Array
        (
            [category] => Web Development
            [title] => JavaScript高级编程
            [author] => 李四
            [price] => 45
        )

)
Copier après la connexion

Comme vous pouvez le voir, en utilisant DOMDocument pour analyser des données XML, nous pouvons facilement obtenir les éléments et attributs en XML, puis convertissez-les en tableau.

4. Résumé

Il existe plusieurs façons pour PHP de convertir du XML en tableaux, à savoir la fonction simplexml_load_string(), la fonction xml_parse_into_struct() et l'utilisation de l'extension DOMDocument. Chaque méthode a ses scénarios applicables. Choisissez la méthode appropriée en fonction des besoins réels. Bien entendu, quelle que soit la méthode utilisée, nous devons prêter attention au format et aux spécifications XML pour garantir l’exactitude et l’exhaustivité des données.

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