【发布时间】:2010-11-26 04:26:30
【问题描述】:
我正在尝试开发一个 iPhone 应用程序来读取 ePub 文件。有没有可用的框架来开发这个?我不知道如何阅读这种文件格式。我尝试使用 NSXML Parser 解析扩展名为 .epub 的示例文件,但失败了。
【问题讨论】:
我正在尝试开发一个 iPhone 应用程序来读取 ePub 文件。有没有可用的框架来开发这个?我不知道如何阅读这种文件格式。我尝试使用 NSXML Parser 解析扩展名为 .epub 的示例文件,但失败了。
【问题讨论】:
EPUB 格式汇集了一堆不同的规范/格式:
规范看起来有点令人生畏,但实际上,一旦您掌握了基础知识(解压缩、解析 XML),这并不是特别困难或复杂。
您需要弄清楚如何下载 EPUB,将其解压缩到某个位置,解析清单,然后显示相关内容。
如果您刚刚开始,请提供一些建议:
要显示内容,现在只需使用UIWebView。
以下是您的代码的高级分步说明:
1) 创建一个带有UIWebView的视图
2) 下载 EPUB 文件
3) 使用上面链接的 zip 库将其解压缩到应用文档文件夹中的子目录
4) 使用上面链接的 TBXML 解析META-INF/container.xml 处的 XML 文件(如果此文件不存在,则 EPUB 无效)
5) 在这个 XML 中,找到第一个媒体类型为 application/oebps-package+xml 的“根文件”。这是本书的 OPF 文件。
6) 解析 OPF 文件(也是 XML)
7) 现在你需要知道本书的第一章是什么。
a) <manifest> 元素中的每个 <item> 都有一个 id 和一个 href。将这些存储在 NSDictionary 中,其中键是 id,对象是 href。
b) 查看<spine> 中的第一个<itemref>。它有一个 idref 属性,对应于 (a) 中的一个 id。在NSDictionary 中查找该ID,您将获得一个href。
c) 这是向用户展示的第一章的文件。找出完整路径是什么(提示:它是您在 (3) 中将 zip 文件解压缩到的任何位置以及 (6) 中 OPF 文件的基本目录)
8) 使用fileURLWithPath: 创建一个NSURL,其中路径是(7c) 的完整路径。使用您在 (1) 中创建的 UIWebView 加载此请求。
您需要实现前进/后退按钮或滑动或其他功能,以便用户可以从一章移动到另一章。使用<spine> 确定下一个要显示的文件 - XML 中的<itemrefs> 按照它们应该出现在读者面前的顺序排列。
【讨论】:
显然 EPUB 是“只是”一种 XML 格式,所以如果你有一个 xml 解析器和the spec 应该没问题。
加上a little tuto?玩得开心!
编辑:您还可以阅读一些代码here,这是用于生成 epub,而不是阅读它们,但代码可能有用。
再次编辑:在右侧边栏中查看相关问题的链接,在支持 ePub 的免费电子书阅读器的答案中有一些链接。
编辑 3:您应该在编辑问题时添加评论,以便回答您的人可以继续讨论(如果您不发表评论,我们不会注意到您的编辑)。
因此,解析失败是因为您没有阅读 Stack Overflow 上的规范或相关问题... *.epub 文件是一个包含 XML 文件的压缩文件夹,而不是纯 xml。
【讨论】:
我通读了一遍本教程(需要免费注册,抱歉),它让我对 ePub 有了很好的介绍。 deverloperWorks tutorial here
我强烈建议您查看一些 XML 处理库。如果您只想从 XML 文件中获取特定信息,那么您可以选择正确的解析策略。
【讨论】:
【讨论】:
我正在为 iPhone 应用程序创建一个 epub 框架。
目前(我真的刚刚开始)我可以生成一个带有章节链接的标题页。
我的方法是
现在我正在研究 pageflip、某种 gui 和小的可用性问题(保存当前正在查看的页面)
我希望这能让您了解如何开始
【讨论】:
Jonathan Wight (schwa) 开发了一种 ObjC 解决方案,用于在 iPhone 上解析和显示 ePub 文档。这是他的 TouchCode 开源存储库的一部分。
【讨论】: