Position actuelle: Accueil> Derniers articles> Comment la fonction XML_SET_DEFAULT_HANDLER gère-t-elle les nœuds CDATA dans les documents XML?

Comment la fonction XML_SET_DEFAULT_HANDLER gère-t-elle les nœuds CDATA dans les documents XML?

M66 2025-06-22
<?php
/**
 * Titre d&#39;article: xml_set_default_handler Comment gérer les fonctions XML Dans le document CDATA nœud?
 */

?>
<hr>

### xml_set_default_handler Comment gérer les fonctions XML Dans le document CDATA nœud?

exister PHP milieu,`xml_set_default_handler` Les fonctions sont un outil très utile,Il permet aux développeurs de XML Analyse过程milieu遇到de默认事件设置处理程序。En particulier,Cela implique comment y faire face XML Dans le document CDATA nœud。Cet article introduira en détail comment l&#39;utiliser `xml_set_default_handler` Fonctions à gérer CDATA nœud。

#### Qu&#39;est-ce que CDATA nœud?

exister XML 文档milieu,CDATA(Character Data)nœud是一种特殊de文本nœud,Permet de contenir des données de caractère qui n&#39;ont pas besoin d&#39;être analysées。CDATA La marque de départ de la zone est `<![CDATA[`,Et la marque finale est `]]>`。exister这个区域内,Tous les personnages,Y compris comme `<` et `&` De tels caractères spéciaux,Sera manipulé tel quel,Pas considéré comme XML Analyse des éléments。

Par exemple,Ce qui suit est un contenu CDATA de XML Exemple:

```xml
<note>
    <to>Tove</to>
    <from>Jani</from>
    <message><![CDATA[This is a <message> with some <text> that is not parsed]]></message>
</note>

Dans cet exemple, Contenu dans la balise avec certains Cela n'est pas analysé]]> sera traité comme texte normal.

Introduction à la fonction XML_SET_DEFAULT_HANDLER

La fonction XML_SET_DEFAULT_HANDLER est une méthode importante de la classe XMLParser dans PHP. Il est utilisé pour définir une fonction de traitement par défaut pour l'analyseur XML. Ce gestionnaire sera appelé lors de la rencontre de tous les types de nœuds non spécifiques dans le document XML. La fonction de traitement par défaut capturera les nœuds de texte, les nœuds CDATA, les commentaires, etc. dans le document.

La fonction est définie comme suit:

 bool xml_set_default_handler ( resource $parser, callable $handler )
  • $ Parser : la poignée de ressources de l'analyseur XML.

  • $ Handler : une fonction de rappel utilisée pour gérer le nœud par défaut. Cette fonction reçoit deux paramètres: type d'événement et données de texte correspondantes.

Comment gérer les nœuds CDATA via XML_SET_DEFAULT_HANDLER ?

Lorsqu'un analyseur XML rencontre un nœud CDATA, le comportement par défaut consiste à traiter le contenu CDATA comme un texte brut. Cependant, nous pouvons définir des gestionnaires par défaut personnalisés pour l'analyseur via XML_SET_DEFAULT_HANDLER pour gérer ces contenus plus granulaires.

Voici un exemple simple montrant comment utiliser XML_SET_DEFAULT_HANDLER pour gérer les nœuds CDATA dans XML:

 <?php
$xml_data = <<<XML
<note>
    <to>Tove</to>
    <from>Jani</from>
    <message><![CDATA[This is a <message> with some <text> that is not parsed]]></message>
</note>
XML;

function default_handler($parser, $data) {
    // 输出处理deCDATAcontenu
    echo "CDATA contenu: " . htmlspecialchars($data) . "\n";
}

// créer XML Analyseur
$parser = xml_parser_create();

// Définir la fonction de traitement par défaut
xml_set_default_handler($parser, 'default_handler');

// Analyse XML données
xml_parse($parser, $xml_data);

// 释放Analyseur
xml_parser_free($parser);
?>

Analyse des processus d'analyse

  1. Créer un analyseur : Créez un analyseur XML à l'aide de la fonction XML_PARSER_CREATE () .

  2. Définissez la fonction de traitement : définissez la fonction default_handler comme fonction de traitement par défaut de l'analyseur via xml_set_default_handler . Cette fonction est appelée chaque fois que l'analyseur rencontre un nœud du type qui n'est pas explicitement spécifié.

  3. Analyse des données XML : utilisez XML_PARSE () pour analyser les données XML. Parce que dans XML La balise contient le nœud CDATA et l'analyseur passera le contenu du nœud à la fonction default_handler .

  4. Résultat de traitement de sortie : La fonction default_handler sortira le contenu CDATA au format d'entité HTML.

Sortie des résultats

Après avoir exécuté le code ci-dessus, la sortie sera:

 CDATA contenu: This is a &lt;message&gt; with some &lt;text&gt; that is not parsed

Cela montre que l'analyseur XML a capturé avec succès le contenu dans le nœud CDATA et l'a transmis à notre fonction de traitement personnalisée. Notez que les caractères spéciaux dans CDATA (tels que <et> ) sont convertis en entités HTML pour éviter les erreurs d'analyse.

Résumer

Grâce à la fonction XML_SET_DEFAULT_HANDLER , les développeurs peuvent traiter de manière flexible divers contenus dans des documents XML, y compris les nœuds CDATA. Après avoir lié un gestionnaire personnalisé à l'analyseur, vous pouvez vous assurer que tous les nœuds qui ne sont pas définis explicitement sont correctement traités, surtout si le nœud CDATA contient des caractères spéciaux qui peuvent interférer avec l'analyse XML. Cette méthode fournit plus de capacités de contrôle et de personnalisation pour l'analyse XML et est l'un des outils les plus pratiques pour traiter les données XML.