Як користуватися HTML Tree Builder у Python
Побудова дерева у Aspose.HTML FOSS для Python реалізує алгоритм стандарту — режими вставки, відновлення після помилок, виявлення quirks та іноземного контенту — з parse_html() як точкою входу в один виклик і TreeBuilder, що розкриває механізм. Цей посібник пояснює pipeline та його поведінку, використовуючи pip для встановлення.
Покроковий посібник
Крок 1: Встановіть пакет
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .Крок 2: Імпортуйте необхідні функції
from aspose_html.tree import parse_htmlКрок 3: Перетворіть розмітку в дерево
parse_html() запускає токенізатор і будівник дерева одночасно, повертаючи готове дерево; parse_fragment() застосовує алгоритм фрагмента до елементу контексту. Обидва керують TreeBuilder.run() внутрішньо.
Крок 4: Розуміння стану конструювання
InsertionMode моделює машину режимів алгоритму, при цьому StackOfOpenElements та TemplateInsertionModeStack відстежують відкриті елементи та режими шаблону точно так, як описано у специфікації.
Крок 5: Спиратися на відновлення помилок за стандартами
Виправлення неправильно вкладених елементів форматування здійснюється за допомогою run_adoption_agency_algorithm() з відстеженням ActiveFormattingList; неправильно розташований вміст таблиці отримує foster-parents через get_foster_parent_location(); типи документів (doctype) класифікуються за допомогою determine_quirks_mode(); атрибути SVG/MathML коригуються за допомогою функцій adjust_*_attributes().
Типові проблеми та виправлення
Неправильна розмітка створює дерево замість помилки. За задумом — алгоритм стандарту визначає відновлення для кожного випадку помилки.
Теги форматування з’являються дубльованими. Алгоритм агентства з усиновлення відновлює контекст форматування після неправильного вкладення; результат відповідає поведінці браузера.
Вміст таблиці переміщено за межі таблиці. Опіка пересунула неправильно розташований вміст; виправте вкладення у вихідній розмітці.
Поширені запитання
Коли слід використовувати TreeBuilder безпосередньо замість parse_html?
Тільки коли потрібна інспекція стану побудови; parse_html() охоплює звичайний парсинг.
Як визначається режим quirks?
determine_quirks_mode() класифікує документ за його doctype.
Чи підтримує будівельник SVG та MathML?
Так — зовнішній вміст маршрутує через регулятори атрибутів з виявленням точок інтеграції стандартів.