如何使用 C# 解析 ncx 文件

How to parse an ncx file using c#

我正在尝试创建一个 windows phone 应用程序来阅读电子书。我提取了内容,现在我想读取 ncx 文件。但是当我尝试使用 System.Xml.Serialization.XmlSerializer 时,它在第二行本身告诉我未知字段。请帮助

这是阅读 epub 文件的基本方法

  • 将 EPUB 文件视为 ZIP 存档并使用 Windows 阅读 内置 ZIP 存档 reader、ZipArchive
  • 在存档中,找到文件 META-INF/container.xml 并查看它
    查找根文件元素的完整路径属性。那给了 您是 OPF 文件的路径(可能类似于
  • OPS/content.opf) OPF文件的'manifest'元素会告诉
    你组成这本书的所有文件的名称。 'spine'
    元素会告诉你它们在书中出现的顺序(和 将通过 spine
    的 'toc' 属性包含一个引用 元素,到通常位于 NCX
    中的 table-of-contents 文件 格式)
  • 通常,EPUB 图书由一系列 XHTML 文件组成,每个 包含一本书 'chapter' 的文件。的基本程序 显示一本书供阅读将是:
    • 找出用户想看的章节
    • 将该章节的 XHTML 加载到 WebView(或其他一些用于在屏幕上呈现 XHTML 的解决方案)

您可能遇到的问题:

  • 许多 EPUB 书籍都是使用 ZIP 生成器创建的,尽管 与 ZIP 标准兼容,与 OS 中内置的 ZIP-reader API。您可能需要使用 第三方库,如 DotNetZip 或 SharpZipLib(但要小心 后者的许可条件)。

  • 您需要做一些工作才能在 WebView 中显示图像, 特别是如果你试图涵盖所有的图像类型 EPUB 标准。

  • 找到并应用 EPUB 中的所有 CSS 样式会很麻烦 书中定义。

  • 您可能想要显示章节的 'paged' 视图, 而不是将其显示为一个长的垂直滚动列。 这将涉及一些时髦的 javascript 工作。

  • 您可能会发现单个 EPUB 章节对于 在 WebView 中显示。最后,您可能会决定所有 WebView 的局限性意味着您最好自己编写 自定义 XHTML 解析渲染方案,并使用显示 TextBlocks,或者更奇特的东西(你可以使用 C++ interop 代码和 D2D 字体 API)

要解析 .epub 文件,您可能需要使用库:

SO 来源:1 2 3 4