我正在使用 python 模块 lxml 来解析 xml 文件。但是,某些 xml 文件包含无效字符,例如 ® 。因此,我收到以下错误。
lxml.etree.XMLSyntaxError: Input is not proper UTF-8, indicate encoding !
Bytes: 0xAE 0x0A 0x53 0x6F, line 45, column 91
-> 删除该字符可以解决问题。
我无法告诉数据提供者向我提供没有这种字符的 xml。 为了避免重复,我尝试了以下堆栈溢出解决方案,但它给了我同样的错误。
parsed_doc = etree.parse(u, etree.XMLParser(encoding='utf-8', ns_clean=True, recover=True))
如何忽略/转义这些字符?
最佳答案
正如 @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))
效果非常好。
关于python - 如何让 xml 解析器忽略无效字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37659666/