如何使用 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
我正在尝试创建一个 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