Lors du traitement des données XML dans PHP, la fonction XML_PARSE est un outil d'analyse très courant, tandis que la fonction XML_PARSER_SET_OPTION offre des options d'analyse plus flexibles pour aider les développeurs à améliorer l'efficacité et la précision de l'analyse XML. Cet article expliquera en détail comment utiliser la fonction XML_PARSER_SET_OPTION et la fonction XML_PARSE pour atteindre l'analyse XML efficace et stable.
XML_PARSE : Il s'agit d'une fonction d'analyse XML dirigée par des événements fournie par PHP, qui est généralement utilisée en conjonction avec XML_PARSER_CREATE et des fonctions de rappel associées. L'analyseur analysera progressivement les données XML et appellera des rappels correspondants pour traiter les balises, le contenu, etc.
XML_PARSER_SET_OPTION : Utilisé pour définir les options de l'analyseur et ajuster le comportement d'analyse, par exemple s'il est sensible à la casse, qu'il soit ignoré, s'il est automatiquement codé, etc.
Par défaut, XML_PARSE peut ignorer certains détails lors de l'analyse, tels que le cas étiqueté insensible ou contenant des caractères d'espace blanc sans signification. Grâce à XML_PARSER_SET_OPTION , le comportement de l'analyseur peut être ajusté en fonction des différents besoins, tels que:
Coupez la conversion de cas, en gardant le nom de balise d'origine ( xml_option_case_folding ).
Ignorez les nœuds de caractères vierges et réduisez les événements non valides ( XML_OPTION_SKIP_WHITE ).
Définissez le format d'encodage pour assurer un support multilingue.
L'exemple suivant montre comment créer un analyseur, définir des options et utiliser une fonction de rappel pour analyser efficacement XML_PARSE :
<?php
// créerXMLAnalyseur
$parser = xml_parser_create();
// Options de réglage,Effondrement de la boîte à offrir,Gardez le nom de la balise d'origine
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
// Options de réglage,Skip Whitespace personnages,Améliorer l'efficacité
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
// Définir la fonction de rappel,Tag de démarrage de traitement
function startElement($parser, $name, $attrs) {
echo "Start element: $name\n";
if (!empty($attrs)) {
foreach ($attrs as $key => $value) {
echo " - Attribute: $key = $value\n";
}
}
}
// Définir la fonction de rappel,Tag de fin de traitement
function endElement($parser, $name) {
echo "End element: $name\n";
}
// Définir la fonction de rappel,Traitement du contenu de la balise
function characterData($parser, $data) {
$data = trim($data);
if (!empty($data)) {
echo "Data: $data\n";
}
}
// Fonction de rappel de liaison
xml_set_element_handler($parser, "startElement", "endElement");
xml_set_character_data_handler($parser, "characterData");
// Préparez-vous à l'analyseXMLChaîne
$xmlData = <<<XML
<note>
<to>User</to>
<from>ChatGPT</from>
<heading type="reminder">Reminder</heading>
<body>Don't forget to check out <a href="http://m66.net/tutorial">our tutorials</a>!</body>
</note>
XML;
// AnalyseXMLdonnées
if (!xml_parse($parser, $xmlData, true)) {
die(sprintf("XML Error: %s at line %d",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
}
// 释放Analyseur资源
xml_parser_free($parser);
?>
Dans l'échantillon XML, tous les noms de domaine URL sont remplacés par m66.net , qui répond aux exigences.
La désactivation de l'effondrement du cas garantit que le nom d'étiquette de la fonction de rappel est cohérent avec le texte XML d'origine, qui est pratique pour les développeurs à gérer.
Sauter les personnages des espaces évide les appels non valides causés par le contenu vierge et améliore les performances.
Combinant la fonction de rappel pour traiter avec précision les balises et le contenu, en réalisant des opérations flexibles.
Parse File Files en blocs : Pour les grands fichiers XML, il est recommandé de lire le contenu du fichier Block par bloc et d'appeler XML_PARSE dans des segments pour éviter l'explosion de la mémoire.
Option d'utilisation raisonnable : la désactivation de l'effondrement des cas peut éviter les incohérences de cas, mais si vous déterminez que la balise XML est toutes les majuscules ou les minuscules, il peut également être activé pour simplifier la logique.
Manipulation des exceptions : Capture en temps opportun et localisation des erreurs d'analyse via xml_get_error_code et xml_get_current_line_number pour améliorer l'efficacité du débogage.
Structure de données personnalisée : créez des tableaux ou des objets personnalisés dans des rappels, qui sont plus pratiques pour le traitement des données ultérieur.
Étiquettes associées:
xml_parse