您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Unicode字符串的lxml.etree.XML ValueError

Unicode字符串的lxml.etree.XML ValueError

data = open(module_path+'/data/ex-fire.xslt')
xslt_content = data.read()

这会使用认编码将文件中的字节隐式解码为Unicode文本。(如果XML文件不是该编码,则可能会导致错误的结果。)

xslt_root = etree.XML(xslt_content)

XML具有自己的编码处理方式和信令,即<?xml encoding="..."?>序言。如果您将一个以Unicode字符串开头的代码<?xml encoding="..."?>传递给解析器,则解析器希望使用该编码来重新声明字节字符串的其余部分…但是不能,因为您已经将输入的字节解码为Unicode字符串。

相反,您应该将未解码的字节字符串传递给解析器:

data = open(module_path+'/data/ex-fire.xslt', 'rb')

xslt_content = data.read()
xslt_root = etree.XML(xslt_content)

或者更好的是,让解析器直接从文件中读取:

xslt_root = etree.parse(module_path+'/data/ex-fire.xslt')
其他 2022/1/1 18:29:47 有491人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶