Lors du traitement des documents XML en PHP, l'une des méthodes d'analyse couramment utilisées est l'analyseur XML basé sur l'événement (Expat). Lorsque vous analysez XML avec expatrié, vous pouvez enregistrer diverses fonctions de rappel pour traiter différents nœuds XML, tels que le démarrage de l'élément, l'élément End, les données des caractères, etc. Pour le contenu d'annotation dans XML, l'expat de PHP n'a pas de fonction de rappel spéciale par défaut, mais nous pouvons utiliser la fonction XML_SET_DEFAULT_HANDLER pour capturer les informations d'annotation.
XML_SET_DEFAULT_HANDLER est une fonction de l'analyseur XML dans PHP, qui définit une fonction de traitement par défaut. Cette fonction de traitement par défaut est appelée lorsqu'un fragment XML qui n'est pas traité par une fonction de rappel spéciale est rencontré. Les commentaires, les sections CDATA, etc. déclencheront la fonction de traitement par défaut.
Par conséquent, nous pouvons capturer le contenu d'annotation via le XML_SET_DEFAULT_HANDLER et le traiter en conséquence.
Voici un exemple qui montre comment utiliser xml_set_default_handler pour traiter le contenu des commentaires dans XML:
<?php
// Créer unXMLAnalyseur
$parser = xml_parser_create();
// Définir la fonction de traitement par défaut,Capturez les commentaires et autres contenus non revêtus
xml_set_default_handler($parser, 'defaultHandler');
// Définissez la fonction de traitement par défaut
function defaultHandler($parser, $data) {
// Le contenu du commentaire est généralement<!--début,par-->Fin
if (preg_match('/^<!--(.*)-->$/s', $data, $matches)) {
echo "Commentez le contenu: " . trim($matches[1]) . "\n";
} else {
// 这里可par处理其他未捕获的contenu,commeCDATAattendez
echo "Traiter le contenu par défaut: " . trim($data) . "\n";
}
}
// LireXMLdonnées
$xml = <<<XML
<?xml version="1.0"?>
<!-- C'estXMLCommentaires de -->
<root>
<child>contenu</child>
<!-- 子元素Commentaires de -->
</root>
XML;
// AnalyseXMLdonnées
if (!xml_parse($parser, $xml, true)) {
die(sprintf("XMLAnalyse错误: %s Dans le %d D'ACCORD",
xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
}
// Libérer les ressources
xml_parser_free($parser);
?>
Nous avons créé un analyseur d'analyseur .
La fonction Defaulthandler est enregistrée à l'aide de XML_SET_DEFAULT_HANDLER pour gérer tout le contenu qui n'est pas capturé par un rappel spécifique.
Dans la fonction de traitement par défaut, l'expression régulière est utilisée pour détecter si les données sont une annotation, et si oui, le contenu d'annotation est sorti.
Un autre contenu qui n'a pas été spécifiquement traité sera également sorti, mais nous nous concentrons ici principalement sur les commentaires.
Commentez le contenu: C'estXMLCommentaires de
Traiter le contenu par défaut:
Traiter le contenu par défaut:
Commentez le contenu: 子元素Commentaires de
Comme vous pouvez le voir, le contenu du commentaire est capturé avec succès et la sortie.
En utilisant XML_SET_DEFAULT_HANDLER , nous pouvons gérer le contenu dans XML qui n'est pas capturé par d'autres rappels spéciaux, y compris les commentaires. Grâce à une correspondance régulière simple, le texte de commentaire peut être extrait pour le traitement correspondant.
Cette approche convient particulièrement à la personnalisation des commentaires tels que la journalisation, le filtrage ou l'extraction de contenu lors de l'utilisation de l'analyseur d'expatrié.