解析NCX文件报错:content元素src属性含<字符求助
解决EPUB NCX文件解析时src属性含'<'的报错问题
解析EPUB文件时触发如下错误:
Error while parsing file: The value of attribute "src" associated with an element type "content" must not contain the '<' character.
我对比了正常通过校验的EPUB代码,二者看起来完全一致,但报错仍存在。以下是问题EPUB的NCX代码片段:
<?xml version="1.0" encoding="utf-8" ?> <ncx version="2005-1" xmlns="http://www.daisy.org/z3986/2005/ncx/"> <head> <meta content="726cb381-54ac-4020-a7f7-8fbfa2bcecff" name="dtb:uid"/> <meta content="1" name="dtb:depth"/> <meta content="0" name="dtb:totalPageCount"/> <meta content="0" name="dtb:maxPageNumber"/> </head> <docTitle> <text>Before the Mayflower: A History of the Negro in America, 1619-1962</text> </docTitle> <navMap> <navPoint id="navPoint-1" playOrder="1"> <navLabel> <text>Preface</text> </navLabel> <content src="Text/Preface.html"/> </navPoint> <navPoint id="navPoint-2" playOrder="2"> <navLabel> <text>1. The African Past</text> </navLabel> <content src="Text/1.html"/> </navPoint> <navPoint id="navPoint-3" playOrder="3"> <navLabel> <text>2. Before the Mayflower</text> </navLabel> <content src="Text/2.html"/> </navPoint> <navPoint id="navPoint-4" playOrder="4">
解决建议
- 检查完整NCX文件:你仅提供了部分代码片段,报错的
<字符大概率存在于未展示的内容中(比如navPoint-4及后续的<content>标签src属性)。直接打开完整NCX文件,逐一排查所有<content>标签的src值。 - 排查隐藏/异常字符:部分情况下,看似正常的字符可能是全角
<或其他编码的特殊字符,或是文件中存在不可见控制字符导致解析器误判。可通过文本编辑器的“显示所有字符”功能(如VS Code的View > Toggle Render Whitespace)查看细节。 - 校验XML合法性:用本地XML校验工具对完整NCX文件进行校验,能精准定位错误位置,效率远高于肉眼排查。
- 检查EPUB完整性:若为自行打包的EPUB,确认打包工具是否错误将HTML内容插入到NCX的src属性;若为下载的EPUB,尝试重新解压并查看原始NCX文件,排除解压过程中文件损坏的可能。
内容的提问来源于stack exchange,提问作者JimM
相关产品推荐
相关产品推荐

