Parsers
Parsers
内部 API — 本页中的类不属于公共 API,也未从顶层导出
aspose.words_foss包。它们在文档转换流水线中内部使用。大多数开发者应使用LdmMarkdownWriter/LdmPdfWriter类和Document.text属性来代替。参见 核心管理 获取公共 API。这些类是实现细节,可能会在未通知的情况下更改。
Aspose.Words FOSS for Python 包含用于从 DOCX 内部提取结构化数据的专用解析器。NumberingParser 负责处理列表编号定义,StyleParser 提取文档样式。
编号解析器
NumberingParser 从 DOCX 包中读取编号定义,并通过查询 API 公开它们。使用 parse_numbering_part() 加载编号 XML,然后使用辅助方法查询列表属性。
| 方法 | 描述 |
|---|---|
NumberingParser.parse_numbering_part() | 解析 DOCX 编号元素 |
NumberingParser.get_list_info() | 通过 ID 获取特定列表的信息 |
NumberingParser.get_level_info() | 获取给定深度的列表级别详细信息 |
NumberingParser.is_ordered_list() | 检查列表级别是有序还是无序 |
NumberingParser.get_start_value() | 获取列表级别的起始编号 |
NumberingParser.get_delimiter() | 获取列表级别的分隔符字符串 |
样式解析器
StyleParser 将样式名称解析为结构化的 ParsedStyle 对象。它根据 DOCX 样式名称识别标题、块引用、代码块和列表段落。
| 方法 | 描述 |
|---|---|
StyleParser.parse() | 将样式名称解析为 ParsedStyle 对象 |
StyleParser.get_style_chain() | 解析一系列样式名称以获取继承的样式 |
StyleParser.is_setext_heading() | 检查样式是否为 Setext 风格的标题 |
StyleParser.extract_all_styles() | 从逗号分隔的链中提取单个样式名称 |
编号数据模型
解析后的编号数据存储在结构化对象中:
| 类 | 描述 |
|---|---|
NumberingInfo | 使用 num_id、abstract_num_id 和 levels 的编号定义 |
NumberingLevel | 使用 format、start 和 text 属性的层级定义 |
ListInfo | 关于特定列表实例的信息 |
ListLevelInfo | 特定层级的格式化细节 |
技巧与最佳实践
- 在加载文档后调用一次
parse_numbering_part(),以填充所有列表定义 - 使用
is_ordered_list()来区分编号列表和项目符号列表 - 使用
get_style_chain()在一次调用中解析继承的样式链 - 编号和样式解析器在文档转换管道内部使用
常见问题
| 问题 | 原因 | 修复 |
|---|---|---|
| 空的编号定义 | 文档中没有列表 | 在访问属性之前检查 get_list_info() 的返回值 |
| 缺少样式 | 未识别的样式名称 | 使用已知样式名称的 parse() |
| 错误的列表级别 | 错误的级别参数 | 列表级别是从零开始索引的 |
API Reference 概述
| 类 / 方法 | 描述 |
|---|---|
NumberingParser.parse_numbering_part() | 解析 DOCX 编号定义 |
NumberingParser.get_list_info() | 按 ID 查询列表信息 |
NumberingParser.is_ordered_list() | 检查列表层级是否有序 |
StyleParser.parse() | 将样式名称解析为结构化信息 |
StyleParser.get_style_chain() | 解析继承样式名称链 |
NumberingInfo | 编号定义数据模型 |
NumberingLevel | 带有格式和起始值的层级定义 |