有没有办法在无效的Char值上恢复iterparse?

时间:2013-02-18 11:07:42

标签: python lxml

我正在使用lxml的iterparse来解析一些大的XML文件(3-5Gig)。由于其中一些文件包含无效字符,因此会抛出lxml.etree.XMLSyntaxError

使用lxml.etree.parse时,我可以提供一个可以在无效字符上恢复的解析器:

parser = lxml.etree.XMLParser(recover=True)
root = lxml.etree.parse(open("myMalformed.xml, parser)

有没有办法为iterparse提供相同的功能?

修改 编码不是问题。这些XML文件中存在无效字符,可以通过使用recover = True定义XMLParser来清理这些字符。由于我需要使用iterparse,我不能使用自定义解析器。所以我在这里寻找上面的代码段中提供的功能:

context = etree.iterparse(open("myMalformed.xml", events=('end',), tag="Foo") <-- cant recover

1 个答案:

答案 0 :(得分:0)

当你说无效字符时,你的意思是unicode字符吗?如果是这样,你可以尝试

lxml.etree.XMLParser(encoding='UTF-8', recover=True)

如果您的意思是格式错误的XML,那么这显然不起作用。如果您可以发布追溯,我们可以看到XMLSyntaxError的性质,它将提供更多信息。