Dans PHP, XML_PARSE est l'une des fonctions principales utilisées pour analyser les données XML. Il combine un analyseur XML ( XML_PARSER_CREATE ) pour analyser les chaînes XML et traiter les résultats d'analyse via une fonction de rappel. Cet article introduira en détail comment utiliser XML_Parse pour analyser les chaînes XML et gérer correctement les situations possibles pendant l'analyse.
Dans PHP, nous devons d'abord créer une instance d'analyse XML, qui peut être implémentée à l'aide de xml_parser_create () :
<?php
$parser = xml_parser_create();
Cette variable Parser $ est la poignée de ressources de l'analyseur XML, et les opérations d'analyse ultérieures doivent être effectuées en fonction de celle-ci.
L'analyse XML est motivée par des événements et nous devons définir les fonctions de rappel pour gérer différentes parties de données XML. Par exemple, nous pouvons définir la façon dont nous le traitons lors de l'analyse de la balise de démarrage, de la balise finale et des données de caractère.
function startElement($parser, $name, $attrs) {
echo "Tag de démarrage: $name\n";
if (!empty($attrs)) {
echo "propriété:\n";
foreach ($attrs as $key => $value) {
echo " - $key: $value\n";
}
}
}
function endElement($parser, $name) {
echo "Étiquette de fin: $name\n";
}
function characterData($parser, $data) {
echo "Données de caractère: " . trim($data) . "\n";
}
Ensuite, nous associons ces fonctions de rappel à l'analyseur à l'aide de xml_set_element_handler () et xml_set_character_data_handler () :
xml_set_element_handler($parser, "startElement", "endElement");
xml_set_character_data_handler($parser, "characterData");
Maintenant, nous pouvons analyser les chaînes XML en utilisant XML_PARSE () . Par exemple:
$xmlData = <<<XML
<root>
<item id="1">Le premier projet</item>
<item id="2">Le deuxième projet</item>
</root>
XML;
if (!xml_parse($parser, $xmlData, true)) {
die(sprintf("XML Erreur d'analyse: %s Dans le processus %d",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)
));
}
Dans cet exemple, nous définissons une structure XML et l'analyons en utilisant xml_parse () . Si l'analyse échoue, utilisez xml_get_error_code () et xml_error_string () pour obtenir les informations d'erreur et terminer le programme.
Après avoir utilisé l'analyseur XML, la ressource doit être publiée:
xml_parser_free($parser);
Supposons que le contenu XML analysé est le suivant:
<root>
<item id="1">Le premier projet</item>
<item id="2">Le deuxième projet</item>
</root>
Après avoir exécuté le script, le résultat de sortie est le suivant:
Tag de démarrage: ROOT
Tag de démarrage: ITEM
propriété:
- ID: 1
Données de caractère: Le premier projet
Étiquette de fin: ITEM
Tag de démarrage: ITEM
propriété:
- ID: 2
Données de caractère: Le deuxième projet
Étiquette de fin: ITEM
Étiquette de fin: ROOT
Si les données XML analysées par XML_Parse () sont incorrectes, par exemple:
<root>
<item>Tags non clos
</root>
À l'heure actuelle, XML_Parse () reviendra False et lancera une erreur d'analyse. Vous pouvez obtenir les informations d'erreur via xml_error_string () .
Si le fichier XML est grand, vous pouvez utiliser la méthode d'analyse segmentée:
$fp = fopen("http://m66.net/example.xml", "r");
while ($data = fread($fp, 4096)) {
if (!xml_parse($parser, $data, feof($fp))) {
die(sprintf("XML Erreur d'analyse: %s Dans le processus %d",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)
));
}
}
fclose($fp);
Cela peut éviter les problèmes de débordement de mémoire causés par le chargement de l'ensemble du fichier XML à la fois.
L'utilisation de XML_Parse pour analyser les données XML dans PHP est une méthode efficace, mais la fonction de rappel doit être définie correctement pour gérer différents événements d'analyse. De plus, la gestion des erreurs d'analyse XML et l'analyse des fichiers importants est la clé pour améliorer la robustesse du programme. J'espère que cet article peut vous aider à mieux comprendre et appliquer la fonction d'analyse XML de PHP!
Étiquettes associées:
xml_parse