如何使xml解析器忽略无效字符?

时间:2016-06-06 14:10:15

标签: python python-2.7 xml-parsing lxml

我使用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))

如何忽略/转义此类字符?

1 个答案:

答案 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))

效果很好。