Hoe de HTML Tree Builder te gebruiken in Python
Boomconstructie in Aspose.HTML FOSS voor Python implementeert het standaardalgoritme — invoegmodi, foutherstel, quirks-detectie en buitenlandse content — met parse_html() als het één-aanroep ingangspunt en TreeBuilder die de mechaniek blootlegt. Deze gids legt de pijplijn en zijn gedrag uit, met gebruik van pip voor installatie.
Stapsgewijze handleiding
Stap 1: Installeer het pakket
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .Stap 2: Importeer de vereiste functies
from aspose_html.tree import parse_htmlStap 3: Parse markup naar een boom
parse_html() voert de tokenizer en boomopbouwer samen uit, en retourneert een voltooide boom; parse_fragment() past het fragmentalgoritme toe tegen een context-element. Beide sturen TreeBuilder.run() intern aan.
Stap 4: Begrijp de constructietoestand
InsertionMode modelleert de modusmachine van het algoritme, met StackOfOpenElements en TemplateInsertionModeStack die open elementen en sjabloonmodi volgen precies zoals de specificatie beschrijft.
Stap 5: Vertrouw op foutherstel volgens de standaarden
Misnested opmaak-elementen repareren via run_adoption_agency_algorithm() met ActiveFormattingList tracking; verkeerd geplaatste tabelinhoud foster-parents via get_foster_parent_location(); doctypes classificeren via determine_quirks_mode(); SVG/MathML attributen aanpassen via de adjust_*_attributes() functies.
Veelvoorkomende problemen en oplossingen
Slechte opmaak levert een boom op in plaats van een fout. Opzettelijk — het standaardalgoritme definieert herstel voor elk foutscenario.
Opmaak-tags verschijnen dubbel. Het adoptiebureau-algoritme reconstrueert de opmaakcontext na een misnesting; de output komt overeen met het gedrag van browsers.
Tabelinhoud is buiten de tabel verplaatst. Pleegouderschap heeft verkeerd geplaatste inhoud verplaatst; corrigeer de nesting in de bronopmaak.
Veelgestelde vragen
Wanneer moet ik TreeBuilder direct gebruiken in plaats van parse_html?
Alleen wanneer je introspectie van de constructietoestand nodig hebt; parse_html() dekt normaal parseren.
Hoe wordt quirks-mode bepaald?
determine_quirks_mode() classificeert het document op basis van zijn doctype.
Ondersteunt de builder SVG en MathML?
Ja — buitenlandse inhoud routeert via de attribuutaanpassers met standaardenintegratie-puntdetectie.