我正在使用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
答案 0 :(得分:0)
当你说无效字符时,你的意思是unicode字符吗?如果是这样,你可以尝试
lxml.etree.XMLParser(encoding='UTF-8', recover=True)
如果您的意思是格式错误的XML,那么这显然不起作用。如果您可以发布追溯,我们可以看到XMLSyntaxError
的性质,它将提供更多信息。