如何在 Python 中使用 HTML Tokenizer

如何在 Python 中使用 HTML Tokenizer

在 Aspose.HTML 的 FOSS 中,针对 Python 的标记器将标记语言转换为标准定义的令牌流——这对于代码检查工具、清理器预处理以及任何在树级以下检查标记的工具都很有用。本指南使用 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.tokenizer import Tokenizer, TokenizerState

步骤 3:对标记进行标记化

Tokenizer.tokenize() 处理完整输入;Tokenizer.tokenize_fragment() 应用片段规则。流中包含已键入的标记:StartTagToken 和 EndTagToken(带属性),用于文本的 CharacterToken,CommentToken、DoctypeToken,以及最终的 EofToken。


步骤 4:控制初始状态

TokenizerState 镜像规范的状态机。对于上下文敏感的输入——可能出现在 <script> 或 <style> 中的内容——在标记化之前使用 Tokenizer.set_state() 设置匹配的初始状态。


步骤 5:解析字符引用

命名和数字字符引用通过 resolve_named_char_ref()、resolve_numeric_char_ref() 和 find_named_char_ref_match() 解析——由完整的命名引用表提供支持。

常见问题及解决方案

脚本或样式内容被标记化为 markup。 初始状态对上下文不正确;请使用以下方式设置 set_state().

实体在输出中未解析。 原始文本的使用者必须运行字符引用解析器;在此层级解析是显式的。

片段输出与完整解析不同。 片段标记化规则有意不同 — 使用 tokenize() 用于完整文档。

常见问题

我可以在不构建树的情况下消费标记吗?

是的 — 标记流是公开输出,独立于树的构建。

存在哪些标记类型?

StartTagToken、EndTagToken、CharacterToken、CommentToken、DoctypeToken和EofToken。

标记器的状态是标准的吗?

是 — TokenizerState 对规范的状态机进行建模。

另请参阅

 中文