我使用python模块lxml来解析xml文件。但是,某些xml文件包含无效字符,例如®。因此,我收到了以下错误。
lxml.etree.XMLSyntaxError:输入不正确的UTF-8,表示编码!
字节:0xAE 0x0A 0x53 0x6F,第45行,第91列
- >删除角色可以解决问题。
我不能告诉数据提供者为我提供没有这样的字符的xml。 为了避免重复,我尝试了从堆栈溢出的解决方案,它给了我同样的错误。
parsed_doc = etree.parse(u, etree.XMLParser(encoding='utf-8', ns_clean=True, recover=True))
如何忽略/转义此类字符?
答案 0 :(得分:1)
如@jwodder所述,xml文件未使用utf-8编码进行编码,即使它具有utf-8作为编码属性。 。我在lxml解析器中将编码参数更改为ISO-8859-1。
parsed_doc = etree.parse(u, etree.XMLParser(encoding='ISO-8859-1', ns_clean=True, recover=True))
效果很好。