# ReadViewSDK 业务逻辑文档 > 最后更新:2026-06-09 --- ## 1. EPUB 解析流程 ### 1.1 文件解压 **入口:** `RDEPUBParser.parse(epubURL:)` EPUB 文件本质是 ZIP 压缩包。解压流程: 1. 计算缓存目录:`~/Library/Caches/ssreaderview-epub/{slug}-{fileSize}-{modifiedTimestamp}/` 2. 如果缓存目录已存在且包含 `META-INF/container.xml`,跳过解压 3. 否则使用 `ZIPFoundation` 解压到缓存目录 4. 解压是幂等的,重复调用不会重复解压 ### 1.2 OPF 解析 OPF(Open Packaging Format)是 EPUB 的核心描述文件。使用 SAX 解析(`XMLParser` + `XMLParserDelegate`)以降低内存占用。 **解析内容:** | 区域 | 提取字段 | |------|----------| | `` | identifier, title, author, language, version, rendition:layout, rendition:spread, readingProgression | | `` | id, href, media-type, properties, fallback, media-overlay | | `` | idref, linear, properties, page-spread | | `` | NCX 文件 id | **Spine 构建:** 将 spine 引用映射到 manifest 条目,规范化 href 相对于 OPF 目录,解析每个条目的布局覆盖(rendition:layout-pre-paginated/reflowable)。 ### 1.3 目录解析 TOC(目录)按优先级尝试三种来源: 1. **NCX(EPUB 2):** 解析 `` 树形结构,支持嵌套 2. **Navigation Document(EPUB 3):** 解析 `