Comment utiliser le HTML Tokenizer dans Python
Le tokenizer dans Aspose.HTML FOSS pour Python convertit le balisage en un flux de jetons définis par les normes — utile pour les linters, les pré-passes de désinfection, et tout outil qui inspecte le balisage en dessous du niveau de l’arbre. Ce guide couvre les points d’entrée de la tokenisation, le vocabulaire des jetons et les états, en utilisant pip pour l’installation.
Guide étape par étape
Étape 1: Installer le package
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .Étape 2: Importer les classes requises
from aspose_html.tokenizer import Tokenizer, TokenizerStateÉtape 3: Tokeniser le balisage
Tokenizer.tokenize() traite l’entrée complète ; Tokenizer.tokenize_fragment() applique les règles de fragment. Le flux contient des jetons typés : StartTagToken et EndTagToken (avec des attributs), CharacterToken pour le texte, CommentToken, DoctypeToken, et un dernier EofToken.
Étape 4: Contrôler l’état initial
TokenizerState reflète la machine d’états de la spécification. Pour une entrée sensible au contexte — le contenu qui apparaîtrait à l’intérieur de <script> ou <style> — définissez l’état initial correspondant avec Tokenizer.set_state() avant la tokenisation.
Étape 5: Résoudre les références de caractères
Les références de caractères nommées et numériques sont résolues via resolve_named_char_ref(), resolve_numeric_char_ref() et find_named_char_ref_match() — soutenues par la table complète des références nommées.
Problèmes courants et solutions
Le contenu de script ou de style est tokenisé comme du balisage. L’état initial était incorrect pour le contexte ; définissez-le avec set_state().
Les entités apparaissent non résolues dans la sortie. Les consommateurs de texte brut doivent exécuter les résolveurs de références de caractères ; la résolution est explicite à ce niveau.
La sortie de fragment diffère d’une analyse complète. Les règles de tokenisation des fragments diffèrent intentionnellement — utilisez tokenize() pour les documents complets.
Questions fréquemment posées
Puis-je consommer des tokens sans construire d’arbre?
Oui — le flux de tokens est une sortie publique, indépendante de la construction de l’arbre.
Quels types de tokens existent?
StartTagToken, EndTagToken, CharacterToken, CommentToken, DoctypeToken et EofToken.
Les états du tokenizer sont-ils les états standard?
Oui — TokenizerState modélise la machine d’états de la spécification.