Comment utiliser le HTML Tree Builder dans Python
La construction d’arbres dans Aspose.HTML FOSS pour Python implémente l’algorithme standard — modes d’insertion, récupération d’erreurs, détection des particularités et contenu étranger — avec parse_html() comme point d’entrée à appel unique et TreeBuilder exposant la machinerie. Ce guide explique le pipeline et ses comportements, 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 fonctions requises
from aspose_html.tree import parse_htmlÉtape 3: Analyser le balisage en un arbre
parse_html() exécute le tokenizer et le constructeur d’arbre ensemble, renvoyant un arbre complet; parse_fragment() applique l’algorithme de fragment sur un élément de contexte. Les deux pilotent TreeBuilder.run() en interne.
Étape 4: Comprendre l’état de construction
InsertionMode modélise la machine d’états de l’algorithme, avec StackOfOpenElements et TemplateInsertionModeStack suivant les éléments ouverts et les modes de modèle exactement comme le décrit la spécification.
Étape 5: S’appuyer sur la récupération d’erreurs des standards
Réparation des éléments de formatage mal imbriqués via run_adoption_agency_algorithm() avec le suivi de ActiveFormattingList; le contenu de tableau mal placé est adopté par des parents de substitution via get_foster_parent_location(); les doctypes sont classés via determine_quirks_mode(); les attributs SVG/MathML sont ajustés via les fonctions adjust_*_attributes().
Problèmes courants et solutions
Un balisage incorrect produit un arbre au lieu d’une erreur. Par conception — l’algorithme des normes définit la récupération pour chaque cas d’erreur.
Les balises de formatage apparaissent en double. L’algorithme adoption agency algorithm reconstruit le contexte de formatage après un mauvais imbriquement ; la sortie correspond au comportement du navigateur.
Le contenu du tableau a été déplacé en dehors de son tableau. Foster parenting a relocalisé le contenu mal placé ; corrigez l’imbrication dans le balisage source.
Foire aux questions
Quand devrais-je utiliser TreeBuilder directement au lieu de parse_html?
Uniquement lorsque vous avez besoin d’une introspection de l’état de construction; parse_html() couvre l’analyse normale.
Comment le mode quirks est-il déterminé?
determine_quirks_mode() classe le document à partir de son doctype.
Le constructeur gère-t-il SVG et MathML?
Oui — le contenu étranger transite par les ajusteurs d’attributs avec détection du point d’intégration des normes.