python - 如何让 xml 解析器忽略无效字符?

标签 python python-2.7 xml-parsing lxml

我正在使用 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/

相关文章:

python - python中的 'with'函数有什么作用?

python - 如何使用 python-vlc 播放视频?

python-2.7 - 将 multiprocessing.Pool 与异常处理结合使用

python - 为什么字符串变量在更改时不更新

c++ - 需要关于选择库的建议以在 C++ 中解析 XML 文件

java - 将 Blockly 生成的 XML 代码解析为 Java 对象

android - 带有大 XML 的 Jsoup

python - 如何将 MySQL SOUNDEX 函数与 SQLAlchemy 结合使用

python - PyGTK 中的小部件透明度?

python-2.7 - 理解 sess.run 中的 feed_dict