Dans PHP, il existe de nombreuses façons de traiter les données XML, parmi lesquelles XML_PARSE () et Simplexml_load_string () sont les deux méthodes les plus courantes. Bien que ceux-ci puissent mettre en œuvre du XML d'analyse, il existe des différences significatives dans l'utilisation, les mécanismes sous-jacents, la flexibilité, etc. Cet article les analysera à partir de trois aspects: leur utilisation fondamentale, leurs similitudes et leurs différences, et leurs avantages et inconvénients respectifs.
XML_PARSE () est l'un des analyseurs XML sous-jacents fournis par PHP, qui est analysé sur la base du modèle axé sur l'événement (SAX). Lorsque l'analyseur rencontre la balise de démarrage, la balise de fin et les données de caractères, il appellera la fonction de rappel que vous avez définie à l'avance.
Exemple de code:
function startElement($parser, $name, $attrs) {
echo "Tag de démarrage: $name\n";
}
function endElement($parser, $name) {
echo "Étiquette de fin: $name\n";
}
function characterData($parser, $data) {
echo "contenu: " . trim($data) . "\n";
}
$xmlData = <<<XML
<note>
<to>User</to>
<from>Admin</from>
<message>Bienvenue à visiter http://m66.net</message>
</note>
XML;
$parser = xml_parser_create();
xml_set_element_handler($parser, "startElement", "endElement");
xml_set_character_data_handler($parser, "characterData");
if (!xml_parse($parser, $xmlData, true)) {
die("XML Erreur d'analyse: " . xml_error_string(xml_get_error_code($parser)));
}
xml_parser_free($parser);
En revanche, simplexml_load_string () est une méthode d'analyse basée sur DOM. Il analyse l'intégralité du document XML dans un objet, et les développeurs peuvent accéder aux nœuds XML comme s'ils accédaient aux tableaux ou aux propriétés d'objet, ce qui le rend plus intuitif.
Exemple de code:
$xmlData = <<<XML
<note>
<to>User</to>
<from>Admin</from>
<message>Bienvenue à visiter http://m66.net</message>
</note>
XML;
$xml = simplexml_load_string($xmlData);
echo "Destinataire: " . $xml->to . "\n";
echo "Expéditeur: " . $xml->from . "\n";
echo "information: " . $xml->message . "\n";
caractéristiques | xml_parse () | simplexml_load_string () |
---|---|---|
Méthode d'analyse | Axé sur les événements (sax) | Basé sur des objets (DOM) |
Utilisation de la mémoire | Moins (adapté aux grands documents) | Plus (l'ensemble du XML est chargé en mémoire) |
Facilité d'utilisation | Besoin de fonctions de rappel personnalisées, qui sont plus compliquées | Semblable à l'accès à la table / objet, simple et intuitif |
Évolutivité | Flexible mais complexe | Évolutivité simple mais limitée |
Gestion des erreurs | Erreur de jugement manuel | Meilleur traitement intégré |
Versions PHP prises en charge | PHP 4 et plus | Php 5 et plus |
avantage:
Il consomme moins de mémoire et convient pour analyser les grands fichiers XML.
Plus sous-jacent et flexible, permettant un contrôle fin de la teneur en XML.
Plus approprié pour le traitement des données de streaming, tels que les flux RSS ou les fichiers journaux.
défaut:
Le codage est complexe et nécessite la définition de plusieurs fonctions de rappel.
Pas amical avec les novices et la mauvaise lisibilité.
Faible efficacité de développement et débogage difficile.
avantage:
Simple à utiliser, syntaxe claire et facile à développer rapidement.
Prend en charge la requête XPath pour améliorer les capacités d'extraction des données.
Convient pour les fichiers XML de petite et moyenne taille et les données bien structurées.
défaut:
L'analyse de l'ensemble du document prend beaucoup de mémoire.
Tolérance à la défaut faible aux structures XML exceptionnelles.
Non adapté pour gérer les données XML en streaming ultra-large ou dynamique.
Lorsque vous traitez avec de grands fichiers XML ou que vous devez traiter les données ligne par ligne , il est recommandé d'utiliser XML_Parse () .
Lorsque la structure de données XML est simple et que le volume de données n'est pas important, l'utilisation de simplexml_load_string () peut considérablement améliorer l'efficacité de développement.